高手来帮忙了解决方法
高手来帮忙了
#include<iostream>
using namespace std;
int q(int n,int m)
{
if(n==m==1)
q(n,m)==1;
if(n==m!=1)
return 1+q(n,n-1);
if(n<m)
return q(n,n);
if(m>1&&m<n)
return q(n,m-1)+q(n-m,m);
}
int main()
{
int i;
cout<<"请输入一个正整数:";
cin>>i;
cout<<"该数的划分个数是:"<<q(i,i-1)<<endl;
return 0;
}
帮忙找一下问题?
------解决方案--------------------
该数的划分个数 是 怎么求的?
------解决方案--------------------
楼主,看下,是不是这样,另外楼主注意结贴率。
#include<iostream>
using namespace std;
int q(int n,int m)
{
if(n==m==1)
q(n,m)==1;
if(n==m!=1)
return 1+q(n,n-1);
if(n<m)
return q(n,n);
if(m>1&&m<n)
return q(n,m-1)+q(n-m,m);
}
int main()
{
int i;
cout<<"请输入一个正整数:";
cin>>i;
cout<<"该数的划分个数是:"<<q(i,i-1)<<endl;
return 0;
}
帮忙找一下问题?
------解决方案--------------------
该数的划分个数 是 怎么求的?
------解决方案--------------------
楼主,看下,是不是这样,另外楼主注意结贴率。
- C/C++ code
#include<iostream> using namespace std; int q(int n,int m) { if(n==1 && m ==1) return 1; if(n == m&& n!=1 && m != 1) return 1+q(n,n-1); if(n<m) return q(n,n); if(m>1&&m<n) return q(n,m-1)+q(n-m,m); } int main() { int i; cout<<"请输入一个正整数:"; cin>>i; cout<<"该数的划分个数是:"<<q(i,i-1)<<endl; return 0; }
------解决方案--------------------
int q(int n,int m)
{
if(n==m==1)
q(n,m)==1; //这里是什么意思?结果是bool值
if(n==m !=1)
return 1+q(n,n-1);
if(n<m)
return q(n,n);
if(m>1&&m<n)
return q(n,m-1)+q(n-m,m);
}
------解决方案--------------------
if(n==m==1)
if(n==m!=1)
这两句在编译的时候我想回给提示的。应该改为:
if ((n == 1) && (m == 1))
if ((n != 1) && (m != 1))
逻辑上应该是这样的吧。
------解决方案--------------------