【发布时间】:2022-10-24 04:12:17
【问题描述】:
我正在尝试添加 3n+1 序列中的所有数字。
我的预期输出是n=20,它将返回66.n=4 返回7 和n=31 返回101104
显然我在下面写的代码会做一些基本的数字,但在那之后它就会到处乱跑。
int sumSeq3nPlus1(int n) {
if (n <= 0) {
return 0;
}
int fib[n+1];
fib[0] = 0;
fib[1] = 1;
int sum = fib[0] + fib[1];
for (int i = 2; i <= n; ++i) {
fib[i] = fib[i-1] + fib[i-2];
sum += fib[i];
}
return sum;
}
添加我们被问到的图像: https://imgur.com/a/o0ISNHB
【问题讨论】:
-
int fib[n+1];——无论哪一本 C++ 教科书告诉你这样做——你需要立即扔掉它,并获得另一本 C++ 教科书。如果您从某个网站上复制了该内容,请不要再访问该网站。如果您在某个小丑的 Youtube 视频中看到这一点,请取消订阅该频道,您就没有学习正确的 C++。这不是标准的 C++,许多 C++ 编译器会拒绝编译它。 -
旁注:无论如何,您可能都不需要该数组。在计算斐波那契时,您真正关心的只是最后一个数字,因此没有必要记录旧值。
-
根据所提供的信息,您班上的任何人都无法做到这一点,如前所述。他们都会失败。
-
你确定
sumSeq3nPlus1应该是斐波那契吗? 3n+1 不会对我尖叫斐波那契。 -
这听起来更像是科拉茨猜想,与斐波那契数列无关……