早教吧作业答案频道 -->数学-->
问个递归的问题,整数划分问题是将一个正整数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.
看了问个递归的问题,整数划分问题是...的网友还看了以下:
一到关于整式的数学题小聪在做一个数学题目(一个多项式减去5x∧2+2x-5)时,由于粗心大意,错把 2020-04-22 …
关于整式加减和乘除以及因式分解的小问题一个式子-2(X+1)(X-2)为什么2只能乘以X+1和X+ 2020-05-13 …
请给我60道五年级分数加减递等式计算题、分数简算题、分数解方程分数递加减等式计算题:每题三个分数, 2020-05-16 …
英语语法关于动名词加S,过去分词,动词ing形式,现在分词类的问题.例如下面这篇文章,其在多处有加 2020-05-22 …
几题关于整式的加减的题目1.多项式2x²-x的值等于1,那么多项式4x的4次方-4x³+3X²-x 2020-06-06 …
关于分式的!分式整理后应该化成相加或相减的形式,因为最终的结果是化到最简形式,除非是因式分解,才会 2020-06-11 …
四年级简易方程题小刚和小芳计算同一个加法算式,小刚由于大意,将一个加数末尾的一个0漏掉了,计算的结 2020-06-27 …
关于整式加减的练习题帮我出100道整式加减题.我只等5天. 2020-07-30 …
关于分式加减的问题在数学书上说,通常分式相加减所得的结果应化为最简分式或整式.我想问一下什么样是最 2020-08-02 …
加法算式题题小杨和小李两个同学,他们再算同一道加法题,由于粗心小杨在一个加数后多了一个0,得到和为2 2020-12-05 …