// 以下是我个人复杂问题简单化的逻辑思路(有问题随时欢迎评论,非常感谢!)
(1) 填 1 解析:m 是自然数之和(n开头加起来的数 = m ), 当m = 1 的时候 ,n 也只能是 1,整个 返回值 也只能是 1。
(2) 填 1 解析:根据 ↑ 当n = 1 的时候,m 是多少 都只有1开头开始加的数,即 1 种方式,所以返回值也为 1 。
然后看到 当 m < n 的时候,返回值 为 f(m,m)
意味着两个数是相等的:以m 开头加起来等于 m 的 m 种方式
也对应了(3)填空前面的判断 m == n
(3) 填 f( m , n - 1 )
解析:1 + f( m , n - 1 )
return 后面有 1 + 也就是说 方式数加 1 ,
当方式数加1的时候,开头数就需要减 1 ,填空的方式数也 减 1,也就是2种方式
原本的开头 n 就成 n-1 , n 开头相加的数还是等于 m 所以 m 不变
最后一个 return 的意思就是 当 m > n 时的返回值
(4) 填 n
解析:f(m,n-1) + f( m-n , n )
这里我采用了例子反推的逻辑推出的
(5)执行程序 f(6,4) = 9
解析:4开头加起来等于6的式子数
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
END :编写不易生活不易处处不易,劳烦各位亲们的小手手把赞赞点起来,Thanks ♪(・ω・)ノ