首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过递归将两个数相乘

通过递归将两个数相乘
EN

Stack Overflow用户
提问于 2020-09-03 04:41:14
回答 3查看 90关注 0票数 1
代码语言:javascript
运行
复制
 #include<iostream>
using namespace std;
int multiply (int num1, int num2){

if (num1 > 0)

  return num2 + multiply(num1-1,num2);


}

int main(){

int mult = multiply(5,6);
cout<<mult;
}

我试图通过递归将两个数字相乘,但我没有得到想要的结果,我想打印30,但它给了我36,我无法运行它并绘制它的树形图

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-09-03 04:42:48

您正在调用未定义的行为,方法是让执行到达函数定义的末尾,而不执行返回类型不是void的函数中的void语句。

代码语言:javascript
运行
复制
 #include<iostream>
using namespace std;
int multiply (int num1, int num2){

if (num1 > 0)

  return num2 + multiply(num1-1,num2);

return 0; // add this
}

int main(){

int mult = multiply(5,6);
cout<<mult;
}

注意:缩进看起来很糟糕,但我尊重原始代码。可读性:

代码语言:javascript
运行
复制
#include <iostream>

int multiply (int num1, int num2)
{
    if (num1 > 0)
        return num2 + multiply(num1 - 1, num2);
    return 0;
}
    
int main()
{
    std::cout << multiply(5, 6) << '\n';
}
票数 3
EN

Stack Overflow用户

发布于 2020-09-03 06:44:48

代码中的问题是,您还没有定义当num1变为零时会发生什么。您还必须在递归函数中定义这种情况。

代码语言:javascript
运行
复制
#include<iostream>

int multiply (int num1, int num2)
{
    
    if (num1 > 0)
        return num2 + multiply(num1 - 1, num2);

    if(num1 <= 0) // or if (num1 == 0) or simply return 0; as pointed out by MikeCAT's answer
        return 0;
}
    
int main()
{
    std::cout << multiply(5, 6);
}

也请参阅这个问题:Why is “using namespace std;” considered bad practice?

票数 0
EN

Stack Overflow用户

发布于 2022-02-22 18:43:09

这段代码是为那些在JAVA中寻找相同逻辑的人编写的。

代码语言:javascript
运行
复制
    import java.util.*;

    public class Main {

      public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        int n = scn.nextInt();
        int m = scn.nextInt();
        int prod = multiplier(n, m);
        System.out.println(prod);
      }

      public static int multiplier(int n, int m) {
        if(m == 0) {
          return 0;
        }
        int nm1 = multiplier(n, m-1);
        int product = n + nm1;
        return product;
      }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63716974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档