1、编写递归函数,计算任意数据n的阶乘
并使用该函数,计算一个输入数据的阶乘值
输入输出示例
输入 | 输出 | |
示例 1 | 5 4 | 120 24 |
源代码:
def factorial(n):
if n==1:
return n
return n*factorial(n-1)
n = int(input())
print(factorial(n))
2、使用递归编写函数:把任意十进制整数n转换成k进制数
输入输出示例
输入n和k的值,
n表示需要转换的数据,
k为需要转换为的进制
输入输出示例
输入 | 输出 | |
示例 1 | 14,2 14,5 | 1110 24 |
源代码:
import math
def change(n,k):
if n<k:
return str(n)
return change(n//k,k)+str(n%k)
s = str(input())
list = s.split(",")
print(change(int(list[0]),int(list[1])))
3、使用递归编写函数计算两个数据m和n的最大公约数
算法:
1.对于已知两数m,n,使得m>n;
2.m除以n得余数r;
3.若r=0,则n为最大公约数结束;否则执行步骤4;
4.m ← n,n ← r,再重复执行步骤2。
输入输出示例
输入 | 输出 | |
示例 1 | 14,6 21,14 | 2 7 |
源代码:
def f(m,n):
if m%n==0:
return n
return f(n,m%n)
s = str(input())
list = s.split(",")
print(f(int(list[0]),int(list[1])))
4、汉诺塔
汉诺塔问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
请输出 三个圆盘的情况下,所有的盘移动步骤,格式如下所示:
A to C
A to B
C to B
A to C
B to A
B to C
A to C
源代码:
def Han_No_Ta(n, l, m, r):
if n == 1:
print(l, " to ", r)
return
Han_No_Ta(n - 1, l, r, m)
Han_No_Ta(1, l, m, r)
Han_No_Ta(n - 1, m, l, r)
Han_No_Ta(3, "A", "B", "C")