gpt4 book ai didi

c++ - 递归调用函数时变量的值

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:51 26 4
gpt4 key购买 nike

考虑函数

void solve(int arr[],int ind,int sum,int n,int count)
{
if(ind==n){
if(sum>max)
max=sum;
}
else{
sum+=arr[ind];//sum
if(ind==n-1)
solve(arr,ind+1,sum,n,1);//1st call
if(ind==n-2 && count>1)
solve(arr,ind+2,sum,n,1);//2nd call
if(ind<n-1 && count<2){
count++;
solve(arr,ind+1,sum,n,count);//3rd call
}
if(ind<n-2)
solve(arr,ind+2,sum,n,1);//4th call
if(ind<n-3)
solve(arr,ind+3,sum,n,1);//5th call
}
}

我对逻辑没有问题,但对变量的传递感到困惑。我无法确定整数 sum+=arr[ind]//sum 是否作为在每次调用中使用相同的变量还是在每次调用函数后更新?

最佳答案

sum 按值传递,因此值不会更新。以下 5 个 solve 调用将传递相同的 sum 值。

如果您希望 sum 在每次调用后更新,您应该通过引用传递它:void solve(int arr[],int ind,int &sum,int n,int count )

关于c++ - 递归调用函数时变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38537949/

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