c++ - C++ 中的斐波那契数列 : Control reaches end of non-void function

标签 c++ recursion fibonacci factorial

在练习递归函数时,我为斐波那契数列编写了这段代码,并且(阶乘)程序没有运行并显示错误“控制到达非空函数的结尾”我怀疑这是关于最后一次迭代达到零并且不知道如何处理负整数。我试过return 0,return 1,但都不好。有什么建议吗?

#include <cstdlib>
#include <iomanip>
#include <iostream>
#include <ctime>
using namespace std;

int fib(int n) {
    int x;
        if(n<=1) {
            cout << "zero reached \n";
            x= 1;
        } else {
            x= fib(n-1)+fib(n-2);
            return x;
        }
    }




int factorial(int n){
    int x;
    if (n==0){
        x=1;
       }
    else {
            x=(n*factorial(n-1));
            return x;
        }

    }

最佳答案

改变

else if (n==1)
        x=1;

else if (n==1)
        return 1;

然后 fib() 应该适用于所有非负数。如果你想简化它并让它适用于所有数字,请使用类似的东西:

int fib(int n) {
    if(n<=1) {
        cout << "zero reached \n";
        return 1;
    } else {
        return fib(n-1)+fib(n-2);
    }
}

关于c++ - C++ 中的斐波那契数列 : Control reaches end of non-void function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9569825/

相关文章:

c++ - 为什么我的 Hippomock 期望在使用多重继承时失败

c - 我如何处理 C 中的递归和数组?

java - 图表需要多大才能触发斐波那契堆的最坏情况复杂性?

java - 对于非常大的 N 求斐波那契第 N 项

C++ 查找 vector 中的重复符号

C++ 专用函数模板别名语法

c++ - Linux C++ LD_LIBRARY_PATH 抑制标准库

javascript - 如何停止 JavaScript 中的递归函数?

php - 递归要求所有文件

c - 找出序列中不超过四百万的所有偶数项的总和