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

C# 如何在表单中显示数字(01 1 2 3 5 8 13),c#,console-application,C#,Console Application,如何在表格0 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++

如何在表格0 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();             
        }
    }
}
建议一些代码,请将您的解决方案分解为斐波那契序列生成器:

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;
  }
}

这就行了。不过,我不建议你把这个交给你的老师:

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))));

严肃地说,我刚刚发布这篇文章是为了证明,对于fibonnaci,有一个解析解,以及正常的迭代解。这只适用于n==71,但是。

你是在问如何计算吗?大量使用BigInteger、yield和Take让OP的作业看起来就像他们从网络上复制的一样。但实际上,你不应该回答这样的问题。如何用C计算斐波那契数可以在网上的数千个地方找到,堆栈溢出上肯定有重复项,OP的问题很不清楚他们到底在寻求什么帮助;代码中可能存在的一个缺陷是,将double截断为long可能会导致取整错误。@DmitryBychenko它最多只能在n==71时使用。当然,代码不是我发明的;
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))));