以下是用非递归方法求的斐波那契数:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d", &n);
// i: 次数 j: 第一个数 k: 第二个数 m: 第三个数
int j = 1; int k = 1; int m;
for (int i = 1; i <= n; i++) {
if (i == 1 || i == 2) {
m = 1;
}
else {
m = j + k;
j = k;
k = m;
}
printf("%d\t", m);
}
system("pause");
return 0;
}
先让用户输入一个数n表示要输出多少个斐波那契数,斐波那契数的第一项和第二项是固定不变的都是1,然后用i控制循环的次数让它小于n,开始的循环用j表示第一个数,k表示第二个数,m表示第三个数,可以说三个为一组数。循环的第一次和第二次结果都是1,往后就是把三个数中的前两数之和赋给第三个数,接着把第二个数赋赋第一个数,再把第三个数赋赋第二个数。印刷要放到循环里面。
以下是递归求斐波那契数的方法:
#include <stdio.h>
#include <stdlib.h>
int Fib(int n) {
if (n < 0) {
return 0;
}
else if(n == 1 || n == 2) {
return 1;
}
else {
return Fib(n - 1) + Fib(n - 2);
}
}
int main() {
int i = 0; int j;
scanf_s("%d", &i);
for (j = 1; j <= i; j++) {
printf("%d\t", Fib(j));
}
system("pause");
return 0;
}