如何在递归函数中只调用一次函数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (120)

我想只调用一次递归函数,但抛出了一个错误。

功能recur(int j)

void recur(int x){
    if(x==0)
        return;
    //want x to be xth fibnocci number,but only at initialization.
    x=fib(x);
    cout<<x<<" ";
    recur(x-1);
}

输出recur(5)应该是{5,4,3,2,1}而不是不{5,3,1}

提问于
用户回答回答于

试试这个:

void recur(int x, bool FirstTime=false)
{
        if(x==0)
            return;
        if(FirstTime) x=fib(x);
        cout<<x<<" ";
        recur(x-1);
}

int main()
{
   recur(5,true);    
}
用户回答回答于

任何时候你想让一个变量在函数中以某种方式启动(无论它是否是递归的),你应该通过函数参数来处理它。该功能已设置为具有初始化阶段。

例:

void recur(int x){
    if(x==0)
        return;
    cout<<x<<" ";
    recur(x-1);
}

int main() {
    recur(fib(x));
    return 0;
 }

所属标签

可能回答问题的人

  • 学生

    3 粉丝476 提问7 回答
  • uncle_light

    5 粉丝518 提问6 回答
  • o o

    4 粉丝494 提问5 回答
  • 富有想象力的人

    3 粉丝0 提问5 回答

扫码关注云+社区

领取腾讯云代金券