Thắc mắc về đệ quy, mong được giải đáp
Chào mọi người , mình đang học về đệ quy và đang tìm hiểu về đệ quy phi tuyến tính , có một bài tập mình không hiểu về cách mà hàm trả lại kết quả , đề bài như thế này
Đây là code
#include <iostream>
using namespace std;
float sum(int n)
{
if(n<=0)
return 0;
return (float)n/(n+1) + sum(n-1);
}
int main()
{
int n = 0;
cout << "Nhap n : ";
cin >> n;
float kq = sum(n);
cout << kq;
}
Mình có debug thử nhưng vẫn chưa thông suốt lắm , Mình đang thắc mắc là không biết khi hàm trả về chương trình sẽ hoạt động như thế này , có phải là (float)n/(n+1)
tương đương với 1/2, 2/3 … ? , vậy thì sum(n-1)
nó thuộc về đâu ? và khi trả về nó sẽ tính toán như thế nào , mong các bạn giải đáp giúp mình.
sum(5)
= 5/6 + 4/5 + 3/4 + 2/3 + 1/2
= 5/6 + sum(4)
Và nếu tính chi tiết thì sẽ là
có phải 5/6 + sum(4) => sum(4) là 4 thằng 4/5 + 3/4 + 2/3 + 1/2 phải không bạn ?
ok bạn, mình hiểu rồi, cảm ơn bạn nha .