我正在解决问题。我想要一个函数,该函数返回所有方式以使不同的正int
数等于该数,例如6将是1 + 5,2 + 3 + 1,2 + 4因此将是3
但是我的解决方案返回了无限循环
#include <iostream>
using namespace std;
int find(int num,int before)
{
int first=1;
int count=1;
int end =num-1;
if(end-first==0) return count;
while(end-first!=1&&end-first!=0)
{
if(end==before||first==before) continue;
first++;
end--;
}
before=first;
return count+find(end,before);
}
int main()
{
int a;
cin>>a;
int x=find(a,1);
cout<<x;
}
我循环尝试cout
“ a”并永远重复一次。请帮助我。
编辑:我的代码仅解决了一个问题,因此不是解决方案,我将尝试关闭主题,谢谢大家
答案 0 :(得分:1)
在这个概念上,first
始终为 1 ,而before
始终为 1 ,因为first
在这里从未递增因为没有达到指令。
first
由 1 初始化,而before
由 1 初始化,这意味着before==first
为true,循环将忽略所有continue
之后的其他说明。
并且由于您正在比较end==before||first==before
,所以这始终是正确的,因为即使end==before
是false
,第二项测试也将是正确的。 false||true
的测试逻辑为true
。