C语言:采用递归调用函数方法计算Fibonacci数列的前20项

2022-03-15 科技 84阅读

#include

#include

longfibonacci(long,int);

voidmain(void)

{

intn;

cout

cin>>n;

cout

if(fibonacci(n,1)==-1)cout

}

longfibonacci(longnumber,intout)

{

if(number

return-1;//returnerrormessage

elseif(number==0)

return0;

elseif(number==1)

{

if(out)

cout

return1;

}

else

{

longlVal;

if(out)

lVal=fibonacci(number-2,0)+fibonacci(number-1,1);

else

lVal=fibonacci(number-2,0)+fibonacci(number-1,0);

if(out)

cout

returnlVal;

}

}

扩展资料:

斐波那契数列是一组第一位和第二位为1,从第三位开始,后一位是前两位和的一组递增数列,

像这样的:1、1、2、3、5、8、13、21、34、55......

今天,用四种方式来进行实现:

1.递归

intFibon1(intn)

{

if(n==1||n==2)

{

return1;

}

else

{

returnFibon1(n-1)+Fibon1(n-2);

}

}

intmain()

{

intn=0;

intret=0;

scanf("%d",&n);

ret=Fibon1(n);

printf("ret=%d",ret);

return0;

}

2.非递归

intFibno2(intn)

{

intnum1=1;

intnum2=1;

inttmp=0;

inti=0;

if(n

{

return1;

}

else

{

for(i=0;i>n-3;i++)

{

tmp=num1+num2;

num1=num2;

num2=tmp;

}

returntmp;

}

}

3.数组

publicintFibno3(intn)

{

Listlist=newList();

list.fib(1);

list.fib(1);

intcount=list.Count;

while(count

{

list.fib(list[count-2]+list[count-1]);

count=list.Count;

}

returnlist[count-1];

}

4.队列

publicintFibno4(intn)

{

Queuequeue=newQueue();

queue.Enqueue(1);

queue.Enqueue(1);

for(inti=0;i

{

queue.Enqueue(queue.AsQueryable().First()+queue.AsQueryable().Last());

queue.Dequeue();

}

returnqueue.Peek();

}

参考资料:

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

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com