我想用递归写斐波那契数列,c语言

Python020

我想用递归写斐波那契数列,c语言,第1张

代码:

#include&ltstdio.h&gt

int Fib(int n){//自定义函数

if(n&lt0)

return-1

else if(n==0)

return 0

else if(n==1)

return 1

else

return Fib(n-1)+Fib(n-2)

}

int main(){

int num

printf("请输入要求取的第n项斐波那契数列n=")

if(scanf("%d",&num)){

if(num&gt=0){

printf("%d",Fib(num))

}

else

printf("Error!!!")

return 0

}

return 0

}

扩展资料:

斐波那契数列排列组合

有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第10级台阶有几种不同的走法

这就是一个斐波那契数列:登上第一级台阶有一种登法;登上两级台阶,有两种登法;登上三级台阶,有三种登法;登上四级台阶,有五种登法……

1,2,3,5,8,13……所以,登上十级,有89种走法。

类似的,一枚均匀的硬币掷10次,问不连续出现正面的可能情形有多少种?

答案是(1/√5)*{[(1+√5)/2]^(10+2)-[(1-√5)/2]^(10+2)}=144种。

求递推数列a⑴=1,a(n+1)=1+1/a(n)的通项公式

由数学归纳法可以得到:a(n)=F(n+1)/F(n),将斐波那契数列的通项式代入,化简就得结果。

参考资料:

百度百科——斐波那契数列

#include <stdio.h>

main( ){

long f1,f2,f;

int i,n

scanf("%d",&n)

f1=f2=1

if(n<=2)

f=1

else

for(i=3i<=ni++){

f=f1+f2

f1=f2

f2=f

}

printf("%ld\n",f)

}

波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、??在数学上,斐波纳契数列以如下被以递归的方法定义:

F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

#include

#define

COL

5

//一行输出5个

long

fibonacci(int

n)

{

//fibonacci函数的递归函数

if

(0==n||1==n)

{

//fibonacci函数递归的出口

return

1

}

else

{

return

fibonacci(n-1)+fibonacci(n-2)

//反复递归自身函数直到碰到出口处再返回就能计算出第n项的值

}

}

int

main(void)

{

int

i,n

n=

17

printf("Fibonacci数列的前%d项\n",

n)

for

(i=0

i

{

printf("%-10ld",fibonacci(i++))

//调用递归函数并且打印出返回值

if(i%COL==0)

{

//若对COL取余等于0就换行,也就是控制每行输出多少个,

//而COL=10就是每行输出10个

printf("\n")

}

}

printf("\n")

return

0

}