Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 难以理解所实现算法的逻辑-C_C#_Integer - Fatal编程技术网

C# 难以理解所实现算法的逻辑-C

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

我发现很难理解以下输出8,8的算法的逻辑。如果您能提供一些见解,我将不胜感激

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序列实现