gpt4 book ai didi

c#递归检查是否偶数

转载 作者:太空宇宙 更新时间:2023-11-03 18:57:54 25 4
gpt4 key购买 nike

我需要帮助来理解这一点。我真的不明白这段代码,这里有人可以解释到底发生了什么吗?

所以这是代码:

static bool IsEven(int n)
{
if (n == 0) return true;

if (IsEven(n - 1))
{
return false;
}
else
{
return true;
}
}

然后我这样做:

Console.WriteLine(IsEven(10));

它实际上是如何工作的?如果我输入数字 10,它会打印出 true。如果我输入数字 7,它会打印出 false。但我不明白为什么它会起作用。

它检查数字是否为 0,然后返回 true。但是我输入了 10(显然不是 0),它仍然打印出 true。然后它检查数字 -1。

所以这将是 10-1,也就是 9。但是它怎么知道 9 不是偶数呢? (它返回 false)。

我不明白这段代码,但它可以工作。老实说,我很困惑。

最佳答案

使用较小的数字(例如 3)从逻辑上遍历它,这样就没有那么多需要考虑的递归。

我们第一次调用 IsEven(3); 它会这样做:

if (3 == 0) return true;

好吧 3 不等于 0 所以它继续:

if (IsEven(3 - 1))

这与:

if (IsEven(2))

所以现在我们在下一次调用 IsEven。第一个检查是 2 == 0,当然它不是,所以它继续 IsEven(2 - 1)

现在我们正在使用 IsEven(1)IsEven 进行第三次调用。好吧,1 == 0 不是真的,所以它继续 IsEven(1 - 1)

现在我们正在使用 IsEven(0) 最后(第四次)调用 IsEven。那么现在 0 == 0 为真,所以我们将 true 返回给第三次调用。

所以现在回到第三个调用 IsEven(1 - 1)true 所以它执行第一个括号中的操作,即返回 false.

回到第二个调用 IsEven(2 - 1) 现在是 false 所以它采取第二个括号中的操作 return true.

回到第一次调用 IsEven(3 - 1) 是真的所以它在第一个括号中采取行动返回 false 表明 3 确实不是甚至。

这就像整数开始。

当然,一个真实的例子可能会像这样使用模 % 运算符。

public static bool IsEven(int number)
{
return number % 2 == 0;
}

关于c#递归检查是否偶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41231432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com