c++ - 如何让递归函数输出数字从f(0)开始,让f(n)向上计数

标签 c++

我当前的输出没有显示计算结果,它从用户输入到 f(0) 的内容开始计算 f(n)。我如何让它从基本情况 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

最佳答案

你的函数没有返回任何东西,这会导致错误的输出:

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 并返回它的值。

现在您的递归调用返回了 down 而不是 up。

关于c++ - 如何让递归函数输出数字从f(0)开始,让f(n)向上计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53105800/

相关文章:

c++ - 如何使用递归类模板在 C++11 中写出元组的内容?

c++ - 绘制 QGraphicsItem 的边框

c++ - ascii 和二进制 - 按应有的方式显示,但读取返回垃圾

c++ - 在线程之间传递数据的最佳实践是什么?队列、消息或其他?

c++ - 如何解决 Opencv 和 GTKmm 之间的冲突?

c++ - 使用 clang 编译 MSVC 标准库。类范围内的显式模板函数特化

c++ - Qt:在 Mac OS X 上更改应用程序 QMenuBar 内容

c++ - 将函数的当前状态传递给 C/C++ 中的另一个函数

c++ - 放弃root权限?

C++ 模板友元函数不链接