<分区>
我有两段代码来获取 arr 元素的总和:
1.
int sum1(int arr[], int size)
{
if(size<0)
{
return 0;
}
else
{
return arr[size] + sum(arr, size-1);
}
}
2.
int sum2(int arr[], int size)
{
if(size<0)
{
return 0;
}
else
{
return arr[size] + sum(arr, --size);
}
}
第一个给了我正确的答案,但第二个给出了一些垃圾。 唯一的区别是,在第二个,我通过了 --size,但在第一个,我通过了 size-1。
即使我通过像 size-- 这样的后递减,我也不知道它们之间有什么区别,它会崩溃。
所以有人请帮助我理解这个问题,我可以理解在后递减的情况下它总是传递相同的值(数组的原始大小),所以它进入循环。
但是预递减的问题是什么,我调试了代码但无法弄清楚,因为在这两种情况下递归调用的循环计数是相同的,并且两种情况下所有调用中的大小值都是相同的。