1.用递归和非递归实现求第n个斐波那契数
非递归实现
1.创建一个一维数组,并定义第一个和第二个元素为1,。
2.然后其余元素为他之前的两个元素之和,从第三个元素开始一直计算到第n个数
3.如果n<3,那么直接返回1,当n>=3时,返回数组下标为n-1的元素
#include<stdio.h>
#define N 100
int ASD(int *arr, int x)
{
int i = 2;
if(x<3)
{
return 1;
}
while(i < x)
{
arr[i] = arr[i-1]+arr[i-2];
i++;
}
return arr[i-1];
}
int main()
{
int a[N] = {1,1};
int n = 0;
int c = 0;
scanf("%d", &n);
c = ASD(a,n);
printf("%d", c);
return 0;
}
递归实现
#include<stdio.h>
#include<stdlib.h>
int Asd(int x)
{
if(x <= 2)
{
return 1;
}
else
{
return Asd(x-1)+Asd(x-2);
}
}
int main()
{
int a = 0;
int n = 0;
scanf("%d", &n);
a = Asd(n);
printf("%d", a);
system("pause");
return 0;
}
2.