java - 整数乘法的递归定义

标签 java function recursion

这是将 ab 相乘的函数:

0    int mult(int a, int b){
1      if(a==0){
2        return 0;
3      } else{
4        a=a-1;
5        int c = mult(a,b);
6        int d = b + c;
7        return d;
8      }
9    }

我正在使用参数 23:结果是 6,但为什么呢?

在第 5 行中,我将在第二个 a=a-1; 之后得到 0 然后 d3 然后 返回 3 而不是 6。我是愚蠢还是它也让你感到困惑?

最佳答案

你对递归感到困惑。

mult(2, 3):
  calls mult(1, 3)
    mult(1, 3):
      calls mult(0, 3)
        mult(0, 3):
          returns 0
      d = 3 + 0
      returns 3
  d = 3 + 3
  returns 6  

关于java - 整数乘法的递归定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13085221/

相关文章:

java - Maven 无法从存储库获取 SNAPSHOT 构建

c++ - 在 C++ 中调用参数作为对未知边界数组的引用

c++ - 为什么将 void 与函数一起使用?

C - 函数中的结构分配

C - 递归数组检查

java - Android Studio 带有分数的测验应用程序

java - HackerRank 上的一维数组游戏

java - 如何使用 Selenium 从 div 元素获取文本仅返回 "."

c# - 不知道如何在 C# 中循环遍历 (n) 个嵌套对象

arrays - 快速从数组中获取值并使用递归函数将它们放入另一个数组