数据结构实例<二>(斐波那契数列)入门

这篇博客介绍了斐波那契数列的基础知识,包括其定义和前10个数字。重点讨论了递归和非递归两种算法来查找数列中的第N个数,特别提到了对于n<=0, 0<n<=2和n>2这三种情况的处理,以及0和1作为特殊情况的解释。" 117776068,10293449,HTML5与jQuery实现鼠标悬停图片放大效果,"['前端开发', 'HTML', 'CSS', 'jQuery']

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

题目:

查找斐波纳契数列中第 N 个数。

所谓的斐波纳契数列是指:

  • 前2个数是 0 和 1 。
  • 第 i 个数是第 i-1 个数和第i-2 个数的和。

斐波纳契数列的前10个数字是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...

* 无论递归还是非递归讨论的总是三种情况:n<=0   0<n<=2   n>2 

*特殊讨论为0  1这两种情况。

*0是第0个元素且是第0个元素的值。

*1的情况有两种,第1个和第2个。


递归算法:

/// <summary>
        ///     递归算法
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public int Fibonacci(int n)
        {
            if (n <= 0)
            {
                return 0;
            }
            if (n > 0 && n <= 2)
            {
                return 1;
            }
            return this.Fibonacci(n - 1) + this.Fibonacci(n - 2);
        }


*递归算法容易理解,嵌套调用Function直至返回结果。(有条件的可以 单步调试即可理解!)

非递归算法:


public static int GeneralFibonacci(int n)
        {
            int sum = 0;
            //穷举第一个和第二个数列元素
            int item1 = 1;
            int item2 = 1;
            if (n <= 0)
            {
                return sum;
            }
            if (n > 0 && n <= 2)
            {
                sum = 1;
                return sum;
            }
            //循环变量应该从0开始长度为n-2 (总长n - 两个穷举数列2)
            for (int i = 0; i < n - 2; i++)
            {
                sum = item1 + item2;
                item1 = item2;
                item2 = sum;
            }
            return sum;
        }
*非递归算法重要的地方再议循环这部分。
1.首先穷举第1和第2两个元素。
2.确定循环长度n-2  
3. 等价替换sum 直至循环结束 sum即为所得。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值