一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少.

思路:有规律可知,后一项等于前两项之和,所以定义两个变量表示前两项,因为第一个第二不妨直接赋值,从第三个开始算
-----------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace _4
{
    class Program
    {
        static void Main(string[] args)
        {
            int n1 = 1;//定义一个数表示第一位
            int n2 = 1;//定义一个数表示第二位
            int sum = 0;//表示第30位的值
            for (int i = 3; i < 31; i++)
            {
                sum = n1 + n2;
                n1 = n2;
                n2 = sum;
            }
            Console.WriteLine("第30位数为{0}", sum);
            Console.ReadKey();
        }
    }
}
### 实现斐波那契列第100的值 递归方法虽然直观易懂,但在计算较大的斐波那契时会面临严重的性能问题。这是因为递归过程中存在大量的重复计算[^1]。例如,在计算 `f(100)` 时,`f(99)` 和 `f(98)` 都会被多次重新计算,这使得时间复杂度呈指增长 \(O(2^n)\)[^2]。 为了优化这一过程,可以引入记忆化存储(Memoization),即保存已经计算过的中间结果以避免冗余运算。这种方法能够显著提高效率并将时间复杂度降低至线性级别 \(O(n)\)。 下面是改进后的 C# 程序代码示例: ```csharp using System; using System.Collections.Generic; class Program { /// <summary> /// 记忆化的字典用于缓存已计算的结果 /// </summary> private static Dictionary<int, BigInteger> memo = new Dictionary<int, BigInteger>(); static void Main(string[] args) { // 初始化前两项 memo.Add(1, 0); memo.Add(2, 1); // 调用函并打印第100项的结果 var result = Fibonacci(100); Console.WriteLine($"Fibonacci number at position 100 is: {result}"); Console.ReadKey(); } public static BigInteger Fibonacci(int n) { if (!memo.ContainsKey(n)) { memo[n] = Fibonacci(n - 1) + Fibonacci(n - 2); } return memo[n]; } } ``` 在此版本中,我们利用了 `Dictionary<int, BigInteger>` 来作为缓存容器,其中键代表序列索引,值对应相应的斐波那契值。由于标准整型可能会溢出,这里采用了 `BigInteger` 据类型来支持大运算[^3]。 需要注意的是,尽管此方案解决了传统递归法中的低效问题,但对于极其庞大的输入仍然可能存在栈溢出的风险。如果目标仅限于获取某一项而非整个列表,则迭代或其他非递归方式可能是更好的选择。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值