c++ 使用加法递归地乘以 2 个整数
c++ Recursively multiply 2 integers using addition
我正在尝试编写使用递归和加法将两个整数相乘的家庭作业代码。但是,我目前收到很多错误消息,我什至不确定我是否走在正确的轨道上。而且,只是为了仔细检查,这是递归的,对吧?我为这个问题编写了另一个程序,效果很好,直到我意识到它实际上不是递归的。以下是完整代码:
#include <iostream>
#include <iomanip>
using namespace std;
int result;
int m;
int n;
int rmultiply(int m, int n)
{
if(n > 1)
return(m + (rmultiply(n - 1)));
else if ((m == 0) || (n == 0))
return 0;
else if (n == 1)
return m;
}
int main(m, n)
{
cout << "Enter two integers to multiply" << endl; //prompt user to input 2 integers
cin >> m >> n; //store them in variable m and n
result = rmultiply(m,n);
cout << result;
}
错误 1:参数太少,无法函数 'int rmultiply(int, int)'
return(m + (rmultiply(n - 1)));
警告:控制达到非无效功能结束
错误 2(对于下面的代码行):表达式列表在初始值设定项中被视为复合表达式
错误 3:在"{"标记之前出现预期的","或";"
警告:逗号运算符的左操作数不起作用
int main(m, n)
{
任何帮助将不胜感激!
当您在此行中再次调用函数时,
return(m + (rmultiply(n - 1)));
您必须传递另一个变量。
此外,将全局变量 m 和 n 命名为不同的名称也是一个好主意。它不会影响编程,而只是为了更好地理解。因为函数 rmultiply
中的 m 和 n 变量总是与全局 m 和 n 不同(除非通过引用传递)。
对于其他错误,请在行中定义一种变量类型,
main(m, n)
也许是整数。
并且,在main
确保返回一个整数。因为在函数定义中,您有int main
这样做的逻辑应该是"将 a 添加到自身多达 b 次"。让我们以2 * 3为例。这可以减少到(3乘以2),即:2 + 2 + 2。下面应该是为此的代码实现。
int product(int a, int b)
{
if( a ==0 || b == 0)
{
return 0;
}
if (b==1)
{
return a;
}
else
{
return a + product(a, b - 1);
}
}
int f(int x,int y)
{
if (y==0)
return 0;
int z=f(x,y/2);
if (y % 2==0)
return 2*z;
else
return x+2*z;
}
相关文章:
- 如何使此递归函数从给定的起始位置返回最小的整数?
- 查找存储在二叉搜索树的所有非叶子中的数据总和?(返回整数的独立递归函数
- 递归返回可被给定整数 k 整除的位数
- 递归函数,用于查找 2 个整数之间的最大值
- 使用递归函数 (c++) 将长字符串转换为整数时输出错误
- 如何使用递归函数返回数组中整数的索引?
- 三重限制的正整数组合的非递归枚举
- 使用递归反转整数,而不在C++尾随 0
- 使用递归实现 pow(A, B) % C,其中 A、B 和 C 是正整数
- 通过递归计数整数中的数字数量
- 编译时间递归函数以计算两个整数的下一个功能
- 使用结构和递归查找整数数组中的最大数字
- 给定一组 12 个整数,如何递归生成所有可能的 4 组 3 个整数?C++
- 正十进制整数的递归函数位数,按c++的相反顺序排列
- 计算n个整数之和的递归函数C++
- 如何在C++中递归地反转负整数
- 编写一个递归函数来乘以2个整数
- c++ 使用加法递归地乘以 2 个整数
- 使用递归C++字符串到整数
- 从递归函数返回非常大的整数