C 编程:展示斐波那契序列
要理解这个例子,你需要了解以下 C 语言编程 主题的知识:
斐波那契数列是一个每一项都是前两项之和的序列。斐波那契数列的前两项是 0 和 1。
斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21
访问此页面了解更多关于 斐波那契数列 的信息。
斐波那契数列,直到第 n 项
#include <stdio.h>
int main() {
int i, n;
// 初始化第一和第二项
int t1 = 0, t2 = 1;
// 初始化下一项(第三项)
int nextTerm = t1 + t2;
// 从用户处获取项数
printf("输入项数: ");
scanf("%d", &n);
// 打印前两项 t1 和 t2
printf("斐波那契数列: %d, %d, ", t1, t2);
// 打印第三项到第 n 项
for (i = 3; i <= n; ++i) {
printf("%d, ", nextTerm);
t1 = t2;
t2 = nextTerm;
nextTerm = t1 + t2;
}
return 0;
}
输出
输入项数: 10
斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,
假设 n = 10
。首先,我们在使用 for
循环打印接下来的 n
项之前,打印了斐波那契数列的前两项。
让我们来看看 for 循环是如何工作的: | i | t1 | t2 | nextTerm |
---|---|---|---|---|
3 | 0 | 1 | 1 | |
4 | 1 | 1 | 2 | |
5 | 1 | 2 | 3 | |
6 | 2 | 3 | 5 | |
7 | 3 | 5 | 8 | |
8 | 5 | 8 | 13 | |
9 | 8 | 13 | 21 | |
10 | 13 | 21 | 34 |
斐波那契数列,直到特定数字
#include <stdio.h>
int main() {
int t1 = 0, t2 = 1, nextTerm = 0, n;
printf("输入一个正整数: ");
scanf("%d", &n);
// 展示始终为 0 和 1 的前两项
printf("斐波那契数列: %d, %d, ", t1, t2);
nextTerm = t1 + t2;
while (nextTerm <= n) {
printf("%d, ", nextTerm);
t1 = t2;
t2 = nextTerm;
nextTerm = t1 + t2;
}
return 0;
}
输出
输入一个正整数: 100
斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,
在这个程序中,我们使用了 while
循环打印出所有直到 n
的斐波那契数。
如果 n
不是斐波那契序列中的一部分,我们将打印出最接近 n
(且小于 n
)的序列。
假设 n = 100
。首先,我们打印出前两项 t1 = 0
和 t2 = 1
。
然后 while
循环使用 nextTerm
变量打印出其余的序列:
t1 | t2 | nextTerm | nextTerm <= n |
---|---|---|---|
0 | 1 | 1 | true 。打印 nextTerm 。 |
1 | 1 | 2 | true 。打印 nextTerm 。 |
1 | 2 | 3 | true 。打印 nextTerm 。 |
... | ... | ... | ... |
34 | 55 | 89 | true 。打印 nextTerm 。 |
55 | 89 | 144 | false 。终止循环。 |