gpt4 book ai didi

c++ - 这是生成斐波那契数列的更好方法

转载 作者:太空狗 更新时间:2023-10-29 20:17:47 25 4
gpt4 key购买 nike

生成斐波那契数列的两种通用方法是:

  1. traditional方法,即在函数内运行一个 for 循环。
  2. 递归

我遇到了另一种解决方案

#include <iostream>

using namespace std;

void fibo() {
static int y = 0;
static int x = 1;
cout << y << endl;
y = x + y;
x = y - x;
}

int main() {
for (int i = 1; i <= 1; i++) {
fibo();
}
return 0;
}

此解决方案在初始运行时看起来运行良好,但与传统的递归方法相比,它是否存在任何明显的缺点?

我确信静态变量会增加空间复杂度,但至少我们没有使用递归构建函数表堆栈,对吗?

最佳答案

我可以立即看到的缺点:

  • 通过本质上使状态成为全局状态,它不是线程安全的
  • 您只能运行一次序列,因为无法重置

我赞成一种将状态保存在一个对象中的方法,您可以请求该对象的下一个值 - 基本上是一个迭代器。 (我一直不确定斐波那契数列映射到 C++ 迭代器的难易程度;尽管它在 C# 和 Java IEnumerable<T>Iterable<T> 上运行良好。)

关于c++ - 这是生成斐波那契数列的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6026519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com