早教吧作业答案频道 -->数学-->
问个递归的问题,整数划分问题是将一个正整数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.
看了问个递归的问题,整数划分问题是...的网友还看了以下:
有一个4位数,是3的倍数,也是3个不同质数的乘积,各数字之和不大于6,且数字里没有质数.问是什么数 2020-05-13 …
多少除以多少等于6余数是6. 2020-05-17 …
X除以X等于6余数是4使除数最小,被除数是多少 2020-05-17 …
甲数除以乙数=5于6,乙数是多少,这时的甲数又是多少 2020-07-12 …
快咯,填空题:1.平方是25的有理数是(),到原点的距离等于6的数是().,绝对值小于2010的所 2020-07-15 …
两个数相除等于6,两数之和287,求两数各是多少 2020-07-19 …
不大于6的数可能是6..(判断对错) 2020-07-21 …
9.999999.是不是等于10?5.55555.是不是等于6?是不是所有无限循环小数都等于他的下 2020-07-24 …
取某种花色的扑克牌10张,分别是1~10.牌面向下无顺序叠一起,任意抽1张,你猜数,如果猜对你获胜, 2020-11-08 …
请教EXCEL表格问题,如下图显示张三的数值小于或等于6时,数字用红色表示如下图:AB张三5李四6王 2020-11-25 …