如何在表单中显示数字(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();
}
}
}
请建议一些代码
将解决方案分解为斐波那契数列生成器:
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。