早教吧作业答案频道 -->数学-->
问个递归的问题,整数划分问题是将一个正整数n拆成一组数连加并等于n的形式,且这组数中的最大加数不大于n.如6的整数划分为65+14+2,4+1+13+3,3+2+1,3+1+1+12+2+2,2+2+1+1,2+1+1
题目详情
问个递归的问题,
整数划分问题是将一个正整数n拆成一组数连加并等于n的形式,且这组数中的最大加数不大于n.
如6的整数划分为
6
5 + 1
4 + 2,4 + 1 + 1
3 + 3,3 + 2 + 1,3 + 1 + 1 + 1
2 + 2 + 2,2 + 2 + 1 + 1,2 + 1 + 1 + 1 + 1
1 + 1 + 1 + 1 + 1 + 1
共11种.下面介绍一种通过递归方法得到一个正整数的划分数.
递归函数的声明为 int split(int n,int m);其中n为要划分的正整数,m是划分中的最大加数(当m > n时,最大加数为n),
1 当n = 1或m = 1时,split的值为1,可根据上例看出,只有一个划分1 或 1 + 1 + 1 + 1 + 1 + 1
可用程序表示为if(n == 1 || m == 1) return 1;
2 下面看一看m 和 n的关系.它们有三种关系
(1) m > n
在整数划分中实际上最大加数不能大于n,因此在这种情况可以等价为split(n,n);
可用程序表示为if(m > n) return split(n,n);
(2) m = n
这种情况可用递归表示为split(n,m - 1) + 1,从以上例子中可以看出,就是最大加
数为6和小于6的划分之和
用程序表示为if(m == n) return (split(n,m - 1) + 1);
(3) m < n
这是最一般的情况,在划分的大多数时都是这种情况.
从上例可以看出,设m = 4,那split(6,4)的值是最大加数小于4划分数和整数2的划分数的和.
因此,split(n,m)可表示为split(n,m - 1) + split(n - m,m)
★-----------***---------------------------------***-----------------------------------------
“ 因此,split(n,m)可表示为split(n,m - 1) + split(n - m,m) ”中的
split(n - m,m) 是怎么推出的啊?规律怎么找出的...本人菜
整数划分问题是将一个正整数n拆成一组数连加并等于n的形式,且这组数中的最大加数不大于n.
如6的整数划分为
6
5 + 1
4 + 2,4 + 1 + 1
3 + 3,3 + 2 + 1,3 + 1 + 1 + 1
2 + 2 + 2,2 + 2 + 1 + 1,2 + 1 + 1 + 1 + 1
1 + 1 + 1 + 1 + 1 + 1
共11种.下面介绍一种通过递归方法得到一个正整数的划分数.
递归函数的声明为 int split(int n,int m);其中n为要划分的正整数,m是划分中的最大加数(当m > n时,最大加数为n),
1 当n = 1或m = 1时,split的值为1,可根据上例看出,只有一个划分1 或 1 + 1 + 1 + 1 + 1 + 1
可用程序表示为if(n == 1 || m == 1) return 1;
2 下面看一看m 和 n的关系.它们有三种关系
(1) m > n
在整数划分中实际上最大加数不能大于n,因此在这种情况可以等价为split(n,n);
可用程序表示为if(m > n) return split(n,n);
(2) m = n
这种情况可用递归表示为split(n,m - 1) + 1,从以上例子中可以看出,就是最大加
数为6和小于6的划分之和
用程序表示为if(m == n) return (split(n,m - 1) + 1);
(3) m < n
这是最一般的情况,在划分的大多数时都是这种情况.
从上例可以看出,设m = 4,那split(6,4)的值是最大加数小于4划分数和整数2的划分数的和.
因此,split(n,m)可表示为split(n,m - 1) + split(n - m,m)
★-----------***---------------------------------***-----------------------------------------
“ 因此,split(n,m)可表示为split(n,m - 1) + split(n - m,m) ”中的
split(n - m,m) 是怎么推出的啊?规律怎么找出的...本人菜
▼优质解答
答案和解析
这里的split(n,m),是最大加数不大于m的n的划分数.
还是以6的划分为例,当m=4时,观察上面列出的结果,实际上就是最大加数等于4的情况,加上最大加数小于4的所有情况.最大加数小于4的以split(n,m-1)表示,而最大加数等于4的划分数,实际上等于2的划分数.
这个稍微有点绕,但其实很好理解.最大加数已经确定了,那么无非就是n减去这个最大加数后的数有多少种划分的问题了,所以这里可能把它表示为split(n-m,m).
这里要注意的是第二个参数是m,而不是n-m,原因其实很简单,看m=2的时候的结果就很清楚了,这时虽然最大加数是2,要看6-2=4的划分数了,但因为最大加数已经是2,所以剩余的4的划分要限制最大加数不大于2.
还是以6的划分为例,当m=4时,观察上面列出的结果,实际上就是最大加数等于4的情况,加上最大加数小于4的所有情况.最大加数小于4的以split(n,m-1)表示,而最大加数等于4的划分数,实际上等于2的划分数.
这个稍微有点绕,但其实很好理解.最大加数已经确定了,那么无非就是n减去这个最大加数后的数有多少种划分的问题了,所以这里可能把它表示为split(n-m,m).
这里要注意的是第二个参数是m,而不是n-m,原因其实很简单,看m=2的时候的结果就很清楚了,这时虽然最大加数是2,要看6-2=4的划分数了,但因为最大加数已经是2,所以剩余的4的划分要限制最大加数不大于2.
看了问个递归的问题,整数划分问题是...的网友还看了以下:
在一个盒中装有6枝圆珠笔,其中3枝一等品,2枝二等品和1枝三等品,丛中任取3枝,问下列事件的概率有 2020-04-06 …
再问几个高二不等式题错用均值不等式的是B(x方+2)/根下(x方+1)大于等于2。Clgx+log 2020-05-19 …
纯水在25摄氏度和80摄氏度时的氢离子浓度前后两个量的大小关系是1,大于2,等于3,小于4,不能确 2020-06-10 …
根的分布一道题已知一元二次方程2mx^-2x-3m-2=0的一个根大于2,一个根小于1,求实数m的 2020-07-12 …
解方程,不等式.方程.1.-5X-1=5-6X2.四分之三X-1=二分之一X+3不等式.5X-1小 2020-07-19 …
在加法中,和()任何一个加数.1大于2等于3小于4大于或等于 2020-07-30 …
1.已知全集U=R,集合A={x|x大于-1,小于等于2},B={x|4x+p小于0},且B包括于 2020-07-30 …
不等式变换当中扩大缩小范围原因我知道是在变换中不等价,但是不等价在什么地方,比如说y=x+(1-x 2020-08-01 …
某校团委组织了有奖征文活动,并设立了一、二、三等奖.根据设奖情况买了50件奖品…………,其中2等奖树 2020-11-10 …
一个小数四舍五入后得2.36,原书的范围是()A:大于或等于2.354但小于2.365B:大于2.3 2021-02-04 …