01/10/2018, 11:37
Nhờ giúp đỡ giải thích đoạn code về đệ quy phi tuyến tính
chào m.n , mình có một đoạn code về đệ quy phi tuyến tính , nhưng vẫn không hiểu lắm , về tính chất thì mình hiểu , nhưng lúc debug thì phần tính toán của nó hơi khó hiểu , mong m.n giải thích giúp mình đoạn code này , ths all
#include <iostream>
using namespace std;
int sum(int n)
{
if(n==0)
return 1;
long s = 0;
for(int i = 1;i<=n;i++)
s = s+i*i*sum(n-i);
return s;
}
int main()
{
int n,m;
cout << "Nhap N: ";
cin >> n;
m = sum(n);
cout << "ket qua = " << m;
}
Bài liên quan
Nói chung là nó cứ tính lần lượt từ trong ra ngoài thôi, kiểu như này:
mình không hiểu lắm
ví dụ lúc mình nhập 3 kết quả là 18
mình debug thử từng lúc tính toán thì lúc đầu như thế này
s(0) = 0 + 1 * 1 * s(2)
s(0) = 0 + 1 * 1 * s(1)
s(0) = 0 + 1 * 1 * s(0)
s(0) = 1
lúc đầu chương trình nó chạy như thế , ở s và i thì nó không tăng lên giá trị gì cả chỉ có 0 và 1 tới lần thứ 2 thì nó mới tăng lên rồi sau đó mình không biết nó tính kiểu gì mà ra 18 luôn
Giá trị của i phụ thuộc vào n mà.
Bạn thử in ra i, n trước mỗi bước cộng đệ quy và sum sau mỗi bước cộng đệ quy để xem kĩ hơn.
ví dụ giờ mình nhập 2 , kết quả sẽ là 5 , bạn có thể ghi giúp mình phần tính toán được không ? , tại giờ net sắp đóng cửa , nên mình không debug được.
thế còn lúc trả về kết quả ? , làm sao nó ra 5 thế bạn.
Tính ngược lại:
okay thank bạn , mình hiểu r