首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使递归函数输出数字,并以f(0)开头,使f(n)计数

如何使递归函数输出数字,并以f(0)开头,使f(n)计数
EN

Stack Overflow用户
提问于 2018-11-01 16:51:50
回答 1查看 42关注 0票数 1

我的当前输出没有显示计算结果,而是将f(n)从用户输入到f(0)中计算下来。如何使它从基情况f(0)开始计数到f(n),并计算这个递归情况公式f(n) =2* f(n-1) -3?这只是因为某种原因扭曲了我的大脑,任何帮助都非常感谢。

代码语言:javascript
运行
复制
#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中获得的一个示例输出是:

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-01 16:54:04

您的函数没有返回任何内容,这会导致错误的输出:

代码语言:javascript
运行
复制
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并返回其值。

现在,您的递归调用已经恢复,而不是向上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53105800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档