【牛刀小试4】斐波那契数

【牛刀小试4】斐波那契数

 

主要知识:

1.        函数

2.        递归

3.        数组

4.        If语句

 

求斐波那契数使用了两种方法,但都使用了递归

 

[程序1]

   说明:使用递归函数就算第N个斐波那契数。
//斐波那契数
 
#include <stdio.h>
 
int Fabonacci( int n )
{
         if(n== 0 || n== 1 )
         {
                   return1;
         }
         else
         {
                   returnFabonacci( n- 1 )+ Fabonacci( n- 2 );
         }
}
 
int main( void )
{
  int     n;
  int num= 0;
  
  printf( "输入要显示第几个斐波那契数: " );
  scanf( "%d", &n );
  
  num= Fabonacci( n );
  
  printf( "第%d个斐波那契数为: %d\n", n, num );
  
  return 0;
}

运行结果:


 

[程序二]

   说明:使用for语句计算,存储于数组中。

//斐波那契数
#include <stdio.h>
 
int main( void )
{
         inti;
         intnum;
         intarray[ 1000 ]= { 0 }; //假设只求1000个斐波那契数,并全置为0
        
         //第一第二个数都为1
         array[0 ]= 1;
         array[1 ]= 1;
        
         //求其他的数,并存入数组
         //从第三个开始算
         for(i= 2; i< 1000; i++ )
         {
             array[ i ]= array[ i- 1 ]+ array[ i- 2 ];
         }
        
         printf("输入您要显示第几个斐波那契数: " );
         scanf("%d", &num );
        
         printf("第%d个斐波那契数为:%d\n", num, array[ num ] );
        
   return 0; 
}

运行结果: (效率比较好些)

 

 

【指尖的微笑】错误在所难免,希望得到大家的指正^-^

转载时保留原文的链接http://oursharingclub.joinbbs.nethttp://blog.csdn.net/mirrorsbeyourself

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用递归函来求解Fibonacci列,代码如下: def fibonacci(n): if n == : return elif n == 1: return 1 else: return fibonacci(n-1) + fibonacci(n-2) 其中,当n等于或1时,直接返回对应的Fibonacci;否则,递归调用函求解前两个Fibonacci的和。 例如,要求第6个Fibonacci,可以调用函fibonacci(6),得到结果8。 ### 回答2: 所谓Fibonacci列,是指从0和1开始,后续的每个都是前两个之和。因此,Fibonacci列的前几个字是0,1,1,2,3,5,8,13,21,34等。如果要求第n个Fibonacci,则需要先知道前n-1和n-2个的值。 使用函求Fibonacci,可以使用递归函的方式。递归函是一种可以在函内部调用自己的函。在计算Fibonacci时,可以将函传递一个整n,代表要求的第n个Fibonacci。函内部判断如果n小于等于1,则直接返回n的值;否则计算返回n-1的Fibonacci加上n-2的Fibonacci。 下面是一个Python实现的代码示例: ```python def fibonacci(n): if n <= 1: return n else: return fibonacci(n-1) + fibonacci(n-2) # 测试代码 for i in range(10): print(fibonacci(i)) ``` 该代码首先定义了一个名为fibonacci的函,函接受一个整n作为参。如果n小于等于1,直接返回n的值。否则,使用递归方式计算n-1和n-2的Fibonacci,然后相加返回结果。在代码的最后,对函进行测试,输出前10个Fibonacci的值。 需要注意的是,递归函可能存在性能问题,在计算较大的n时可能会花费很长时间。因此,在实际应用中,可以使用其他更高效的算法实现Fibonacci计算。 ### 回答3: 斐波那契数列是指该列中的每一项都是前两项的和,且第一项和第二项均为1。列的前几项是:1, 1, 2, 3, 5, 8, 13, 21, ... 利用函斐波那契数列可以使用递归和循环两种方法。 一、递归方法:递归方法是利用函自己调用自己的方式,不断计算前面的值来得出后面的值。递归方法的优点是代码简单易懂,缺点是计算量很大,深度较深时容易出现栈溢出的问题。 实现代码如下: ```python def fib(n): if n <= 2: return 1 else: return fib(n-1) + fib(n-2) # 测试代码 print(fib(3)) # 2 print(fib(6)) # 8 ``` 二、循环方法:循环方法是通过循环迭代的方式,计算前面的值来得出后面的值。循环方法不需要多次调用函,因此效率比较高。 实现代码如下: ```python def fib(n): if n <= 2: return 1 a, b = 1, 1 for _ in range(n-2): a, b = b, a+b return b # 测试代码 print(fib(3)) # 2 print(fib(6)) # 8 ``` 通过上述代码的实现,我们可以用函求出斐波那契数列中的任意一项,方便快捷。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值