C++ 斐波那契数列练习

博客介绍了斐波那契数列,即从第三项起每一项是前两项之和。阐述了写出第n项递归函数的思路,包括声明变量、设定递归结束条件、从第三项开始计算等,还提及加前n项和只需添加静态变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

斐波那契数列为从第三项开始,每一项都是前两项之和的数列,即
在这里插入图片描述

根据这个规律可以很容易写出第n项的递归函数:

void main()
{       
	cout << Fibonacci(8) << endl;       
}
int Fibonacci ( int  n )
{ 
	if ( n <= 2 )
	{
		if (n == 0) 	    
		{
       	     		return 0;
		}          
		return 1 ;
	}    
	else 
	{        
		return Fibonacci ( n-1 ) + Fibonacci ( n-2 ) ;
	}
 }

在这里插入图片描述

不过如果我们要将前n项都显示出来就要换种思路了。

由于递归会使范围逐渐缩小,在数列中会逐渐减少到前两项,最后递归结束才开始从前两项运算回第n项,而由于第n项是由前两项相加得来,所以我们需要两个静态变量记录第n-1项与第n-2项,还需要一个临时变量将第n-2项在相加后换成第n-1项,所以先声明两个静态变量与一个局部变量,同时因为前两项设定为都是1,所以定义时初始化静态变量的值。

static int x=1, y=1;
int Temp;

然后我们写递归的结束条件,由于是从第三项开始算,所以递归到第n=2项时结束,即

if(n>2){} 

而在第n=2项时要输出前两项的值,即

else{
     cout << x << endl;
     cout<< y << endl;  
}

从第三项开始,第三项等于前两项之和,即第n-1项变为第n项,而第n-2项变为第n-1项,代码表示为

z = x;
x = x + y;
y = z;

由于是显示第n项的值,所以要加输出

cout << x << endl;  

接下来就是放递归体了,由于思路是让递归结束后再从第三项开始逐步执行递增,那么我们的递归体就不能放在迭代体后面,且要从第n项递减,即Fibonacci(n-1),整体代码如下

void main()
{
    int n;
    cin >> n;
    Fibonacci(n);   
}
Void Fibonacci(int n){
    static int x=1, y=1;
    int Temp;
    if (n > 2) {
        Fibonacci(n - 1);
        Temp = x;
        x = x + y;
        y = Temp;
        cout << x << endl;  
    }   
    else {
       cout << x << endl;
        cout << y << endl;          
    }
}

在这里插入图片描述
要加前n项的和也很简单,加多个静态变量就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值