递归除法
recursive divison of number
我有以下代码递归地除以另一个数字:
#include <iostream>
using namespace std;
int divide(int number,int dividend){
int answer=0;
if (number>dividend || number==dividend ){
answer+=1;
return divide(number-dividend,dividend);
}
return answer;
}
int main(){
cout<<divide(20,5)<<endl;
return 0;
}
,但不幸的是我得到零作为答案。你看到哪里不对了吗?
Answer是一个局部变量。当您运行这段代码时,对divide
的第一次调用将创建answer
变量的实例,将其设置为0,然后将其增量为1。然后,当您再次递归地调用divide
时,它会为answer
变量创建一个全新的实例,将该实例设置为0,然后将该实例增加为1。
在对divide
的最后调用中,它创建了一个全新的 answer
变量的实例,将该实例设置为0,但由于现在number<=dividend
它不增加它,它返回answer
的实例,该实例为0。
在if
分支中,您正在增加answer
,但返回一些不相关的内容(递归调用的结果)。我敢肯定,这不是你想要的。从这里开始。
您正在递归地运行以下代码:
if (number>dividend || number==dividend ){
answer+=1;
return divide(number-dividend,dividend);
}
但是一旦递归调用结束(即number < dividend
),您将忽略if语句并且返回0;
你做 int answer=0;
在函数调用的开始,所以当if
语句是错误的,它返回0
所以你应该定义它作为输入参数(通过引用调用)或使其全局(不推荐),不要将其设置为零,只是设置它之前你的递归函数调用。
相关文章:
- 通过递归进行因子分解
- 递归函数计算序列中的平方和(并输出过程)
- 使用递归的数组的最小值.这是怎么回事
- 递归列出所有目录中的C++与Python与Ruby的性能
- 递归计数给定目录的文件和所有目录
- 如何在BST的这个简单递归实现中消除警告
- C++:正在检查LinkedList中的回文-递归方法-错误
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 递归无序映射
- TSP递归解的迭代形式
- 如何在Elixir中调用递归函数并行
- 返回递归调用和仅递归调用的区别
- 数组元素打印的递归方法
- 使用递归时获取变量的奇怪值
- 如何在C++中递归地按相反顺序打印集合
- 到连接组件算法的问题(递归)
- 如何使用递归打印修改后的星号三角形图案
- 通过递归计算模数而不使用模除法
- 递归路径查找,直到除法结果为1
- 递归除法