01/10/2018, 09:44
Lỗi Đệ Quy, anh em nào tìm được ko
Có dãy Tribonacci T = 1+2+3+6+11+20+37+68+125+… Code của em ko ra kết quả đúng :((
/*T=1+2+3+6+11+20+37+68+125+...*/
#include <stdio.h>
#include <conio.h>
long H(int n) {
if (n < 4) return n;
else return H(n - 1) + H(n - 2) + H(n - 3);
}
long Tong(int n) {
long sum = 0;
for (int i = 1; i < n; i++)
sum += H(i);
return sum;
}
int main(int argc, char const *argv[])
{
printf("%ld
", Tong(5));
getch();
return 0;
}
Bài liên quan
i <= n nhé
Ban đầu em cũng cho i <= n nhưng vẫn ko đúng
Thay
i <= n
đúng mà bạnTong(5) => 0 1 2 3 4
H(4) = 0 1 2 3
4 = H(3) + H(2) + H(1) ?
Thế 1 + 2 + 3 + 6 + 11 không bằng 23 thì bằng mấy?
Trong hàm đệ quy của em, H(1) == 1, H(2) == 2… mà
OK em hiểu vấn đề rồi cám ơn anh, em lại cứ nghĩ là mình làm in ra dãy 1 + 2 + 3 +… quên là in ra tổng S :)))
Em hiểu vấn đề rồi, cám ơn ae
Ok e hiểu vấn đề rồi, cám ơn ae
dùng thêm đệ quy nó có tối ưu thời gian ko a
Đệ quy lúc nào cũng là không tối ưu về mặt thời gian. Chỉ là code nó ngắn gọn đỡ phải mất công nghĩ tên biến thôi :))
Thế nên e cũng khử nó rồi
Có thể trong bài tập thì như vậy không vấn đề. Nhưng nói chung là không ai muốn nhìn code như thế của em cả.
Ít nhất cũng phải làm như ban đầu, tách H và Tong ra làm 2 hàm riêng biệt, để người ta đọc code còn hiểu em muốn làm gì.
Ok em cám ơn, vì mới học nên code e vẫn chưa rõ ràng
Fibo(n) (1, 1) thì có tổng là Fibo(n+2) - 1 (quy nạp), còn Tribo thì chắc cũng có công thức đó. Nhưng Tribo giải khá cực