C# 难以理解所实现算法的逻辑-C
我发现很难理解以下输出8,8的算法的逻辑。如果您能提供一些见解,我将不胜感激C# 难以理解所实现算法的逻辑-C,c#,integer,C#,Integer,我发现很难理解以下输出8,8的算法的逻辑。如果您能提供一些见解,我将不胜感激 using System; namespace Console_Example { class Program { static void Main(string[] args) { Console.WriteLine(g(4) + g(5) + "," + g(6)); Console.ReadKey
using System;
namespace Console_Example
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(g(4) + g(5) + "," + g(6));
Console.ReadKey();
}
static int g(int k)
{
if ((k == 1) || (k == 2))
return 1;
else
return g(k - 1) + g(k - 2);
}
}
}
只是一个递归函数。你必须遵循所有步骤 如果k=1: 返回1 如果k=2: 返回1 如果k=3: 返回g2+g1结果为:1+1=2 如果k=4: 返回g3+g2结果为:1+1+1=3 如果k=5: 返回g4+g3结果为:5+3=5 如果k=6:
返回g5+g4结果为:5+3=8这看起来非常类似于,其中每个数字是前面两个数字的总和 因为它是一个递归函数,请看返回的gk-1+gk-2;在它调用自身的地方,您必须遵循所有递归,直到它结束 g1:1-因为返回1; g2:1-因为返回1; g3:g2+g1=1+1=2-这里开始递归 g4:g3+g2=2+1=3 g5:g4+g3=3+2=5 g6:g5+g4=5+3=8 所以g4+g5+,+g6应该是: 3+5,8=8,8 相当于F4和F5的总和,结果是F6值 斐波那契序列的更好实现是 静态整数Fibonacciint k { ifk<0 抛出新ArgumentExceptionBonnaci,数字>=0; 如果k==0 | | k==1 返回k; 其他的 返回Fibonaccik-1+Fibonaccik-2; }
jusz调试该函数,您将发现自己的问题。无论如何,你的问题有一个可怕的标题。它应该包含相关的信息。你期望代码做什么?写下你期望它的行为,调试它,并将它的行为与你认为应该做的进行比较。另外,从更简单的函数调用开始,传递它一些小的数字,比如1,2,3,48,8是正确的,在纸上调试,看起来像是一个Fibonnaci序列实现