你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / C专栏
将正整数n表示成一系列正整数之和
 

将正整数n表示成一系列正整数之和
n=n1+n2````+nk;(其中n1>=1;````nk>=1)
正整n的这种表示为正整数n的划分称正整数n的划分.正整数n的不同的划分称为正整数n的划分数,记q(n,m) 

求解:
请问以下程序,有什么问题
#include  <iostream>
using namespace std;
//待划分参数正整数n,划分后最大正加数要求为m,返回划分的方法种类
int q(int n,int m)
{  

if (n <1 ¦ ¦m <1) return 0;   //不可再分的条件

if((n==1) ¦ ¦(m==1)) return 1;

if(n <m) return q(n,n);

if(n==m) return q(n,m-1)+1;
return q(n,m-1)+q(n-m,m);
}

int main()
{   int n,m;
    char c;
   while(1)
   {//输入相关参数
cout < <"请输入你要划分的整数n=";
cin>>n;
    cout < <"请输入你要划分的后最大的加数m=";
cin>>m;
    
//输出求解结果
cout < <"划分的方法种类" < <q(n,m) < <endl;

    //判断是否继续计算
cout < <"是否结束求解(y/n)?  ";
cin>>c;
if(c=='y') break;

   }


   return 0;
}
为什么会出现以下这种错误的结论的


一生何求(443978206) 12:36:55
正确的应是q(6,6)=1(种划分方法"6") 
正确的应是q(6,5)=1(种划分方法"5+1")  

(编辑:ywang)

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089