该程序随意地从递归中出来

时间:2016-03-21 08:12:16

标签: c++ recursion

请参阅我正在尝试打印数字n可以打印的不同方式,其中最大数字为4 我的程序在循环中减去no here(4),然后在末尾打印4并将剩余的数字here(2)发送到同一函数,最大值为3,2,1。 当max为1时,它只打印所有1。

当我输入n = 6时,它显示输出

  

2
  1 1 4

应该显示的地方

  

2 4
  1 1 4

我不知道为什么会出现这种情况,这是一个简单的递归,我也检查了很多错误。

这是代码

#include<bits/stdc++.h>
using namespace std;
void comp(int n,int k)
{
if(n>=k&&k!=0&&k!=1&&n!=0)
{

    for(int i=1;i<=(n/k);i++)
    {
        for(int l=k-1;l>=1;l--)
        {
            comp(n-(i*k),l);

        }

        for(int j=0;j<i;j++)
        {
            cout<<k<<" ";
        }
        cout<<"\n";
    }
}
if(k==1)
{
    for(int i=0;i<n;i++)
    {
        cout<<"1 ";
    }

}

}
int main()
{
int n;
while(cin>>n)
{
    comp(n,4);
}

return 0;
}

0 个答案:

没有答案