0、1、1、2、3、5、...フィボナッチ番号を見つけるにはどうすればよいですか?(再帰的および非再帰的)

●两种方法求斐波那契数   
●斐波那契数:01123581321……
从第三个数起,每个数=前面两个数之和


int fib(int n)             //递归
{
    
    
	if(n==1)        
	{
    
    
		return 0;     //第一个斐波那契数返回0
	}
	
	if(n==2)         
	{
    
    
		return 1;   //第二个斐波那契数返回1
	}
	else
	{
    
    
		return fib(n-1)+fib(n-2);
	//从第三个数起,每个数=是前面两个数的和
    //进行不断地递归,直到 return 一个值
    
	}
	
 } 
 
 //
 //
 
int fib(int n)           //非递归
{
    
    
	if(n==1)
	{
    
    
		return 0;
	}
	//赋值第一、二、三个斐波那契数
	int first=0;  
	int second=1;
	int third=1;
	while(n>2)   //注意判断条件
	{
    
    
	//每次循环 third、second、first的值向后更新
		third=first+second; 
		first=second;       
		second=third;
		n--;
	}
	return third;	//当n==2时,可直接返回third
}

int main()
{
    
    
	int x=0;
	printf("请输入一个数:");
	scanf("%d",&x); 
	printf("%d",fib(x));
	return 0;
 } 


おすすめ

転載: blog.csdn.net/cfk17829572643/article/details/109728917