1 c recursion printf fibonacci
我刚刚开始学习C,我决定研究一些欧拉问题来练习.无法运行的程序是为了解决Problem2,它要求计算低于4,000,000的所有偶数Fibonacci数的总和.
这个程序的真正奇怪之处在于它实际上是有效的,但是只有在递归过程中我打印一些东西时:每当我尝试printf("bazooka");在递归函数中注释掉这一行时,我得到的结果看似完全随机,并且在大正数和大负数之间变化连续执行相同程序时的数字(例如-882154758和770491113).另一方面,如果我打印一些东西,无论如何,在递归函数中,我得到正确的输出.
我发现这种行为非常奇怪和有趣,而且我真的想知道发生了什么:真正令我感到困惑的是,即使程序根本没有改变,输出的数字也会改变.另外,我不明白为什么在递归期间打印应该对正在执行的整数计算产生任何影响.
这是我的主要功能:
int first = 1; int second = 2; int total = 0;
total = Fibo(first,second, total);
printf("\nthis is my result for Euler 2: ");
printf("%d",total);
Run Code Online (Sandbox Code Playgroud)
这是我的递归函数:
int Fibo(int first, int second, int total) {
printf("bazooka");
if (second < 4000000) {
int add;
second = first+second;
first = second-first;
if (first%2 == 0) {
add = first;
}
total = add+Fibo(first,second,total);
}
return total;
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?我非常感谢你的帮助.