我的当前输出没有显示计算结果,而是将f(n)从用户输入到f(0)中计算下来。如何使它从基情况f(0)开始计数到f(n),并计算这个递归情况公式f(n) =2* f(n-1) -3?这只是因为某种原因扭曲了我的大脑,任何帮助都非常感谢。
#include <iostream>
using namespace std;
int f(int n);
int main (){
int number;
cout << "Enter a number greater than or equal to 0: ";
cin >> number;
while(number<0){
cout << "Please enter a valid number!" << endl;
cout << "Enter a number greater than or equal to 0: ";
cin >> number;
}
f(number);
}
int f(int n){
//Base Case
if (n==0){
cout << "f(" << n << "): " << 5 << endl;
}
//Recursive case
else{
cout << "f(" << n << "): " << endl;
2 * f(n-1)-3;
}
}我应该在基本案例f(0)=5中获得的一个示例输出是:
f(0): 5,
f(1): 7,
f(2): 11,
f(3): 19,
f(4): 35,
f(5): 67,
f(6): 131,
f(7): 259,
f(8): 515发布于 2018-11-01 16:54:04
您的函数没有返回任何内容,这会导致错误的输出:
int f(int n){
//Base Case
if (n==0) {
cout << "f(" << n << "): " << 5 << endl;
return 5;
}
//Recursive case
else {
int temp = 2 * f(n-1)-3;
cout << "f(" << n << "): " << temp << endl;
return temp;
}
}这样,您首先得到递归回调,输出较低的值作为副作用,然后输出当前的新n并返回其值。
现在,您的递归调用已经恢复,而不是向上。
https://stackoverflow.com/questions/53105800
复制相似问题