python给出一个递归算法,只使用加法和减法计算两个正整数m和n的乘积
时间: 2023-05-16 18:07:05 浏览: 179
以下是一个使用递归算法、只使用加法和减法计算两个正整数m和n的乘积的Python代码:
```
def multiply(m, n):
if n == 1:
return m
else:
return m + multiply(m, n-1)
```
这个算法的基本思路是,将m加上自身n-1次,即可得到m*n的结果。每次递归时,将n减1,直到n等于1时返回m。
相关问题
使用辗转相除法和递归求两个正整数m和n的最大公约数
题目中给出了两个正整数 m 和 n,要求使用辗转相除法和递归求出它们的最大公约数和最小公倍数。
辗转相除法:
1. 假设 m 大于等于 n。
2. 将 m 除以 n,得到余数 r1。
3. 如果 r1 等于 0,那么最大公约数就是 n,最小公倍数就是 m 与 n 的积除以最大公约数。
4. 如果 r1 不等于 0,那么将 n 替换成 r1,然后重复步骤 2 和 3 直到余数为 0。
递归求解:
1. 如果 n 等于 0,那么最大公约数就是 m,最小公倍数就是 0。
2. 否则,计算 m 除以 n 的余数 r2,然后递归调用函数,把 n 替换成 r2。最大公约数就是递归返回的值,最小公倍数就是 m 乘以 n 除以最大公约数。
综上所述,使用辗转相除法和递归可以分别求出这两个正整数的最大公约数和最小公倍数。
使用辗转相除法和递归求两个正整数m和n的最大公约数。
使用辗转相除法和递归可以求出两个正整数m和n的最大公约数。
具体步骤如下:
1. 用m除以n,得到余数r。
2. 如果r等于,则n就是最大公约数。
3. 如果r不等于,则用n除以r,得到余数r1。
4. 重复步骤2和3,直到余数为为止。
5. 最后得到的n就是最大公约数。
递归实现的代码如下:
```python
def gcd(m, n):
if n == :
return m
else:
return gcd(n, m % n)
```
其中,第一行判断n是否为,如果是,则返回m;否则,执行第二行的递归调用,将n和m%n作为参数传入。这样,每次递归调用都会将n和m%n作为新的参数,直到n等于为止,返回最大公约数。