递归法查找第n项斐波那契数会很简单,但用于打印前四十项会非常慢,非常不推荐。
fei_2:递归
fei_1:循环
#include<stdio.h>
void print(int k, int arr[40]);
void fei_1(int arr[40])
{
int i = 0;
for (i = 2; i < 40; i++)
{
arr[i] = arr[i - 1] + arr[i - 2];
}
}
int fei_2(int i)
{
if (i == 0) return 1;
if (i == 1) return 1;
if (i >= 2) return fei_2(i - 1) + fei_2(i - 2);
}
int main()
{
int i = 0;
int arr[40] = { 0 };
arr[0] = 1; arr[1] = 1;
fei_1(arr);
print(40, arr);
for (i = 0; i < 40; i++)
{
arr[i]=fei_2(i);
}
print(40, arr);
return 0;
}
void print(int k, int arr[40])
{
int i = 0;
for (i = 0; i < k; i++)
{
printf("%10d", arr[i]);
if ((i + 1) % 4 == 0)
{
printf("\n");
}
}
}