30/09/2018, 17:07
Lỗi khi cài đặt recursion trong C++
Sáng giờ loay hoay với cái bài này mà em vẫn chưa hiểu là mình sai chỗ nào , mong mọi người giup đỡ
Mục tiêu dùng recursion để kiểm tra xem nếu x<= 100 thì x=x+1 cho tới khi x>100
Code của em
#include <iostream>
using namespace std;
int tong (int x)
{
if (x<=100)
{
x=x+(x+1);
return x;
tong(x);
}
else
{
return x;
}
}
int main()
{
int x;
cin >> x;
cout << tong (x) << endl;
return 0;
}
Bài liên quan
tại sao lại return trước khi gọi đệ quy nhỉ?
em nghĩ nếu để return sau khi gọi thì máy sẽ bỏ qua luôn để nó lặp lại
Hay là anh thử suy nghĩ ngược lại chút xíu.
Kiểu như cho nó bắt đầu tính từ 101, rồi đệ quy nó giảm dần từ từ
Trong mã của bạn,
return x;
được gọi trước khi gọi đệ qui nên dù trường hợp nào hàm cũng sẽ không gọi chính nó được.Ý tưởng đơn giản là thế này: điều kiện
x > 100
là phần neo của đệ qui, khi điều kiện này thỏa thì hàm sẽ trả về giá trị x cho biến đang gọi hàm này, ngược lại, hàm sẽ gọi chính nó với tham số là x + 1, lúc này biến x sẽ được cộng dồn, quá trình này sẽ lặp lại đến khi thỏa điều kiện neo.Bạn nên dùng chức năng debug và theo dõi Call Stack sẽ hiểu rõ hơn về bản chất của việc gọi hàm đệ qui