高手来帮忙了解决方法

高手来帮忙了
#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))
逻辑上应该是这样的吧。
------解决方案--------------------
探讨
if(n==m==1)
if(n==m!=1)
这两句在编译的时候我想回给提示的。应该改为:
if ((n == 1) &amp;&amp; (m == 1))
if ((n != 1) &amp;&amp; (m != 1))******
逻辑上应该是这样的吧。