gpt4 book ai didi

c++ - C 中参数中的 --i 和 i - 1 有什么区别?

转载 作者:行者123 更新时间:2023-11-30 20:17:35 24 4
gpt4 key购买 nike

我正在编写一个程序,以递归方式打印出前 10 个自然数。首先,我放置一个参数“--num”

int natural_numbers(int num) {
if (num > 1) // Base case
natural_numbers(--num);
printf("%d ", num);
}
Input: 10
Output: 1 1 2 3 4 5 6 7 8 9

然后我将参数更改为“num - 1”,它打印出我所期望的内容。

int natural_numbers(int num) {
if (num > 1) // Base case
natural_numbers(num - 1);
printf("%d ", num);
}
Input: 10
Output: 1 2 3 4 5 6 7 8 9 10

我不知道为什么第一个输出是错误的。我需要一些帮助。

最佳答案

在第一部分中,您使用预减 -- 运算符更改 num 值。您的第二个代码不会更改 num 值(它将临时 num - 1 值传递给函数调用)。

因此,如果您下一个 printf num 值,它会有所不同。在第一个代码部分中,它减一,在第二部分中,它是原始的 num 值。

如果您最初使用 num == 10 调用 natural_numbers,您可以在下面跟踪其值在下一行中如何变化/不变化。

                                  //      num (its value)
int natural_numbers(int num) { // 10
if (num > 1) // Base case // 10
natural_numbers(--num); // 10 / and 9 (after execution)
printf("%d ", num); // 9
}

int natural_numbers(int num) { // 10
if (num > 1) // Base case // 10
natural_numbers(num - 1); // 10
printf("%d ", num); // 10
}

关于c++ - C 中参数中的 --i 和 i - 1 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56924354/

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