c++ - 我试图用 C++ 编写递归斐波那契数列,但是当我编译时出现错误

标签 c++ recursion fibonacci

当我尝试在 C++ 中使用递归算法计算斐波那契数列时,我收到有关内存分配的错误。我可以运行具有 void 返回值的递归算法,但是当返回值是 int 时,内存就会出现问题。有解决办法吗?

#include <iostream>
using namespace std;

int fib(int start);

int main()
{
  int x,y;
  cout << "Enter a value for x: ";
  cin >> x;


  y = fib(x);
  cout << "Your product is: ";
  cout << y << endl;
  return 0;

}

int fib(int start){
  if(start == 0 || start == 1){
    return start;
  }
  return fib(start)*fib(start-1);
}

最佳答案

问题是斐波那契函数不对...

如果您的变量 start 恰好不同于 0 或 1,那么您可以反复执行 fib(start) 函数

return fib(start)*fib(start-1);

这将产生一个 stackoverflow,因为该函数正在无限地调用自身。

另一方面,您不应将这些值相乘,而应将其相加

 return fib(n - 1) + fib(n - 2);

关于c++ - 我试图用 C++ 编写递归斐波那契数列,但是当我编译时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45962555/

相关文章:

c++ - 使用opencv减去图像

c++ - 指向多次实例化的函数模板的指针

algorithm - 损坏的计算器

java - Java 中的斐波那契算法

c++ 本地时间到 mysql 日期时间

c++ - 用单个字符初始化字符串

algorithm - 递归奇数?代码目前找到偶数

Python:调用复制函数时调用 Python 对象时超出最大递归深度

java - 动态规划斐波那契数列

java - 根据 "Fibonacci sequence"寻找答案