C# 如何在表单中显示数字(01 1 2 3 5 8 13)
如何在表格0 1 2 3 5 8 13中显示数字 使数字显示前1个数字,然后第二个数字与前一个数字相加 => 0然后1然后1+0=1然后1+1=2然后1+2=3,依此类推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++
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))));