【发布时间】:2014-04-06 21:48:02
【问题描述】:
您好,C 每天都在进步,这是我教科书中的一个示例问题,它生成斐波那契数并显示递归函数。该程序有效,但我只是不明白如何......特别是在部分(looper % 5),整个功能fib 和printf(", %8ld", fib(looper)); 正在做什么。就像说 fib() 做 x 次一样。如果这个问题不容易解释,那么有人可以向我展示一种更简单的方法来理解递归函数是如何工作的,而不是“河内之塔”的例子。谢谢。
注意:程序旨在处理多达 30 个数字,否则它开始看起来很难看。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
long fib (long num);
int main(void)
{
int seriesSize;
printf("This program will print out a Fibonacci series.\n");
printf("How many many numers do you wnat? ");
scanf_s("%d", &seriesSize);
printf("First %d Fib numbers: \n", seriesSize);
for (int looper = 0; looper < seriesSize; looper++)
{
if (looper % 5)
{
printf(", %8ld", fib(looper));
}
else
{
printf("\n%8ld", fib(looper));
}
}
printf("\n");
return 0;
}
long fib(long num)
{
if (num == 0 || num == 1)
{
return num;
}
return (fib(num - 1) + fib(num - 2));
}
【问题讨论】:
-
if (looper % 5)只是帮助格式化输出,使用","或"\n"分隔值。 -
哦,回头看看我现在看到的程序,它只是在四行上添加了“,”。即 1..4 % 5 = "," 和 5 % 5 = 10. % 有时会让人感到困惑......谢谢。