java - 递归问题缺少乘法
问题描述
我有这个递归代码
public static int m(int n1, int n2) {
int result;
if (n2 - n1 == 0) {
result = n1; }
else {
int mid = (n1 + n2) / 2;
result = m(n1, mid) * m(mid + 1, n2);
}
return result;
}
但我不明白为什么不执行递归乘法的第二部分,如果我输入参数 (2,3) 结果是 6 但在我下面的计算中是 120
m(2,3)
mid= 5+2=3
m(2,3) * m(4,5)
mid= 2+3/2=2 mid= 4+5/2=4
m(2,2) * m(3,3) m(4,4) * m(5,5)
2 * 3 4 * 5
6 * 20
120
你能解释一下为什么吗谢谢
解决方案
我认为您在第一步中计算了中间错误。正确的递归树将是 -
m(2,3)
mid = 2 [=5/2]
m(2,2) * m(3,3)
2 * 3
= 6
推荐阅读
- firebase - 如何从 Firebase 存储中检索视频?科特林
- leveldb - leveldb 禁用或阻止日志文件
- python - 在方法中缺少 1 个必需的位置参数
- drupal - 我可以为视图设置动态参数吗?
- linux - Pacemaker IPaddr2 资源 - 无法从接口中删除 IP
- ruby-on-rails - 罗尔。宝石法拉第。如何重新发送带有正文的帖子查询
- android - Android:SQL Server以编程方式检查登录详细信息
- python - 如何从包含另一个数组的一维数组制作二维数组?
- authentication - 强制 SAML 的 Azure AD 登录提示
- .net - Docketfile - 单元测试不适用于多个构建目标