通过递归将两个数字相乘

问题描述

 #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,我无法空运行它并使其成为树形图

解决方法

您通过使执行到达函数定义的末尾而不在返回类型不是constructor(props) { super(props); this.state = { supplier: { _id: '',name: '' } }; this.handleUpdateForm = this.handleUpdateForm.bind(this); } componentDidUpdate(prevProps,prevState) { const { supplier } = this.state; if (prevState.supplier._id !== supplier._id) { console.log('Supplier id changed'); } } handleUpdateForm(fieldsToUpdate,inputName,inputValue) { let { supplier,suppliers } = this.state; if (fieldsToUpdate === 'supplierFields') { if (inputName === 'supplier_id') { const selectedSupplier = inputName === 'supplier_id' ? suppliers.find((supplier) => supplier._id === inputValue) : null; supplier = Object.assign(supplier,selectedSupplier); } else { supplier._id = inputName === 'name' ? '' : supplier._id; supplier = Object.assign(supplier,{ [inputName]: inputValue }); } } this.setState({ supplier }); } 的函数中执行return语句来调用未定义的行为

void

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

 #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;
}
,

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

#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?