Đề bài : ThucHanh04a_Ham.pdf
Dùng khái niệm hàm đệ quy để viết các hàm sau (với N nhập từ bàn phím) :
a) Tổng các chữ số của số nguyên dương N nhập vào từ bàn phím
b) Tính số thứ N trong dãy Fibonaci
c) Tổng của N số đầu tiên trong dãy Fibonaci
----------------------------------------------------------------------------------------
Code : Dùng đệ quy ngắn hơn rất nhiều nên mình gộp chung 1 file luôn ( 1 cái hay của đệ quy là ngắn gọn )
http://pastebin.com/Psnxnfzq hoặc thuchanh4a-bai2.cpp
----------------------------------------------------------------------------------------
#include <iostream>
using namespace std;
int tongcacchuso(int n)
{
if (n<10) return n;
return (n%10) + tongcacchuso(n/10);
}
int fibo(int n)
{
if ( n<=1) return n;
return fibo(n-1) + fibo(n-2);
}
int main ()
{
int n;
cout << "Nhap so N | so fibonaci thu N: " ;
cin >> n;
cout << "Tong cac chu so: " << tongcacchuso(n) << endl;
cout << "So fibonaci thu " << n << " la: " << fibo(n) << endl;
int tong=0;
for ( int i=0; i<=n; i++)
{
tong+= fibo(i) ;
}
cout << "Tong cua " << n << " so fibonaci dau tien la: " << tong << endl;
system("pause");
return 0;
}
--------------------------------------------------------------------------------------
Ngắn bằng 1 phần của Thực hành 4a - Bài 1 luôn.
Đối với với phần tính tổng của số nguyên dương n thì không thành vấn đề nhưng phần tính số fibonaci thì thôi rồi quá lâu.
Bạn thấy nếu tính số fibo thứ 40 thôi thì đã thấy đệ quy tính rất lâu trong khi ko dùng đệ quy chỉ trong nháy mắt. Bạn mở Windows Task Manager -> Performance sẽ thấy CPU Usage tăng đột biến, ngốn thôi rồi.
Bạn nhập số to quá, ví dụ 1000 thì mà ra tổng âm thì đấy là do quá giới hạn của kiểu int nhé.