斐波那契数列递归算法c语言(c++斐波那契数列递归算法)
C语言编程:用递归和非递归法输出斐波那契数列
递归法:
#includestdio.h
void main()
{
int Fibonacci(int n);
int n,i,c=0;
printf("请输入n的值:");
scanf("%d",n);
for(i=1; i=n; i++)
{
c = Fibonacci(i);
printf("%12ld",c);
if(i%4==0) //用于换行 4个一行;
printf("\n");
}
}
int Fibonacci(int n)//函数部分;
{
long int f;
if(n==1 || n==2)
{
f=1;
}
else
if(n=3)
f = Fibonacci(n-1) + Fibonacci(n-2);
return f;
}
非递归法:
#includestdio.h
void main()
{
int i,n;
int f[]= {1,1};
printf("请输入n的值:");
scanf("%d",n);
for(i=2; i=n; i++)
f[i] = f[i-2] + f[i-1];
for(i=0; i=n; i++)
{
if(i%5==0) printf("\n");
printf("%12d",f[i]);
}
printf("\n");
}
递归可以使程序看起来比较简洁,但缺点是效率比较低,并且可能导致栈溢出,因此需要灵活使用递归。
编写一段C语言程序:利用函数的递归调用求斐波那契数列,该数列的公式如下:
#includestdio.h
#includestdlib.h
int f(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
else
{
return f(n - 1) + f(n - 2);
}
}
int main()
{
int n;
scanf("%d", n);
for (int i = 1; i = n; i++)
{
printf("%d ", f(i));
}
system("pause");
return 0;
}
C语言 用递归法求斐波那契数列第n项值 不要复制粘贴的
#include stdio.h
int fun(int n)
{
if( n == 1 || n == 2) // 递归结束的条件,求前两项
return 1;
else
return fun(n-1)+ fun(n-2); // 如果是求其它项,先要求出它前面两项,然后做和。
}
int main()
{
int n;
printf("please input n: ");
scanf("%d",n);
printf("Result: %d\n", fun(n));
return 0;
}
哪儿不明白就继续追问