gpt4 book ai didi

c++ - 试图编写一个递归函数来计算总和为该数字的序列数 C++

转载 作者:太空狗 更新时间:2023-10-29 21:07:48 24 4
gpt4 key购买 nike

好的,这就是我正在尝试做的事情。用户输入一个数字。我正在尝试编写一个递归函数来计算总和为该数字(用户输入)的序列数。

例如:

那么总和为6的序列数就是11(包括6本身)。

6
5+1
4+1+1
3+1+1+1
2+1+1+1+1
1+1+1+1+1+1
2+2+1+1
3+2+1
4+2
2+2+2
3+3

我也在尝试不让序列重复,例如 2+2+1+1 和 1+1+2+2。

我没有包含代码的原因是我无法找到一种递归方法来完成这项工作,所以我正在寻求一些指导。提前致谢!

补充:

好的,这就是我的思考过程。6 可以拆分为...

6
5+1
4+2
3+3

但是还没有结束,如果拿5+1算+1部分就完成了;您使用相同的技巧继续。

4+1+1
3+2+1

但随后他们开始重复......我的计划中没有比这第二步更进一步的了。

好的,所以代码明智,这是我自己想出的。寻找解决此问题的建议。

int sum(int number, int min, int counter)
{
int temp=0, n;
n=number+temp;
if (number>=(n/2)& number!=min)
{
while (number>=(n/2))
{
cout << number << "+"<< temp <<"\n";
number --;
temp ++;
counter ++;
}
}
sum(temp, 1,counter);
return counter;
}

int main()
{
int number;

cout << "Please enter the number: ";
cin >> number ;
cout << "\n";

sum(number, 1, 0);

return 0;
}

我确实意识到这是一团糟。

最佳答案

提示:尝试找到一个函数,给出总和为 n 且项不大于 k 的序列数。

编辑:
如果这听起来很刺耳,请原谅我,但是......你更新的代码都是错误的。很难看出你的意图。我能猜到,但这毫无意义。

这是我的想法:一个序列应该是非递增的,比如“2 2 1 1 1 1”。那么有多少个这样的序列加起来是6?好吧,找出以 1 开头的此类序列的数量,然后是以 2 开头的序列的数量,依此类推,直到 6,然后将它们相加。有多少序列以 2 开头加起来为 6? (这就是递归的用武之地。)在每个这样的序列中,第一项是 2,其余加起来是 4 ,没有一项超过 2,所以我们必须找到 加起来为 4 且没有项大于 2 的序列。所以先写签名,再写迭代循环,再写递归调用就大功告成了。

编辑:
好吧,这里是除了循环之外的所有内容:

int partition(int n, int max)
{
if(n==0)
return(0);
int ret = 0;
if(n<=max)
ret=1;
for(...)
{
...
}
return(ret);
}

你能填空吗?

关于c++ - 试图编写一个递归函数来计算总和为该数字的序列数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4384021/

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