gpt4 book ai didi

c - 寻找选择 k 个数加起来为 n 的方法的数量

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:02 25 4
gpt4 key购买 nike

我需要找到选择 k 的方法数加起来等于 n 的数字, 其中1<= k <= n .数字不重复。我正在尝试递归解决方案,我认为它会进入无限循环。

void noofways(int firstnumchosen,int sum,int numofnum)
{
if(sum<0)
return;

if(sum==0 && numofnum!=0)
return;

if(sum==0 && numofnum==0){
globalcount++;
return;
}

if(numofnum<=0)
return;

// not choosing the first number
noofways(firstnumchosen+1,sum,numofnum);

//choosing the first number
noofways(firstnumchosen+1,sum-firstnumchosen,numofnum-1);
}

globalcount这里是一个全局变量。要使用 3 个数字得到 7 的总和,我将调用函数 noofways(1,8,3); .为了让自己更清楚,解集由(1,2,5),(1,3,4)等组成。

为什么我的函数会无限运行?

最佳答案

noofways(x, y, z) 调用 noofways(x+1, y, z),所以 x 无限增长。

需要测试x是否过大,参数检查时返回:

if (firstnumchosen > something)
return;

这不是唯一的问题,但它是无限循环的原因。

关于c - 寻找选择 k 个数加起来为 n 的方法的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12966644/

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