如何在表单中显示数字(0 1 1 2 3 5 8 13)

本文关键字:表单 数字 显示 | 更新日期: 2023-09-27 18:33:04

如何在表单中显示数字(0 1 1 2 3 5 8 13)这样显示数字前 1 个数字,然后第二个是加上前一个数字的数字=>0 然后 1 然后 1+0 = 1然后 1+1= 2 然后 1+2=3 等等?

using System;
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 0; i < 20; i++)
            {
                Console.Write(i) ;
            }
            Console.ReadKey();             
        }
    }
}

请建议一些代码

如何在表单中显示数字(0 1 1 2 3 5 8 13)

将解决方案分解为斐波那契数列生成器:

using System.Numerics;
using System.Linq;
public static IEnumerable<BigInteger> Fibonacci() {
  BigInteger a = 0;
  BigInteger b = 1;
  yield return a;
  yield return b;
  while (true) {
    BigInteger result = a + b;
    a = b;
    b = result;
    yield return result;
  }
}

和序列表示:

  Console.Write(String.Join(" ", Fibonacci().Take(20))); 

这将做到这一点。不过,我不建议把这个交给你的老师:

double Phi = (1.0 + Math.Sqrt(5.0)) / 2.0;
double D = 1.0 / Math.Sqrt(5.0);
Func<int, ulong> fib = i => (ulong) ((Math.Pow(Phi, i) - Math.Pow(1.0 - Phi, i))*D);
Console.WriteLine(string.Join(" ", Enumerable.Range(0, 21).Select(i => fib(i))));

(严肃地说,我只是发布了这个来证明斐波那契有一个解析解决方案,以及正常的迭代解决方案。不过,这最多只能到 n == 71。