一、递归
1.1 使用递归实现:计算某个数的阶乘
import mathdef re_mul(n): if n <= 0: return 1 return n*re_mul(n-1)while True: num = input("请输入数字:\n") if(num == "退出"): break try: num_int = math.floor(eval(num)) print(re_mul(num_int)) except: print("输入错误")
1.2 用递归函数来实现获取斐波拉契数列中第n个数字的值
ps(斐波那契数列:从3三个数开始,后一个数等于前面两个数的和:
0,1,1,2,3,5,8,13,21,34,55,89,144……
)
import mathdef func(num0,num1,num_index):#斐波那契数列 if num_index == 1: return num0 if num_index == 2: return num1 return func(num0,num1,num_index-1)+func(num0,num1,num_index-2)while True: num0 = input("请输入第一个数字:\n") num1 = input("请输入第二个数字:\n") if(num0 == "退出" or num1 == "退出" ): break try: num0_int = eval(num0) num1_int = eval(num1) while True: num_index = input("请输入第几项:\n") if num_index == "exit": break num_index_int = eval(num_index) print("第一项为{},第二项为{}".format(num0,num1)) print("斐波那契数列第{}为{}".format(num_index,func(num0_int,num1_int,num_index_int))) except: print("输入错误")
二、函数封装
2.1 封装函数实现如下要求
例如:输入2,5
则求:2 + 22+222 + 2222+22222的和
import mathdef re_func(num,n):#数字重复 if n <= 1: return num return re_func(num,n-1)*10+numdef func(num,n):#循环加法 resurt = 0 for i in range(1,n+1): resurt +=re_func(num,i) return resurtwhile True: num1 = input("请输入数字1:\n") num2 = input("请输入数字2:\n") if(num1 == "退出" or num2 == "退出"): break try: num1_int = math.floor(eval(num1)) num2_int = math.floor(eval(num2)) print("结果为",func(num1_int,num2_int)) except: print("输入错误")
2.3 计算2-100之间素数的个数,返回结果
import mathdef is_func(n): if n < 2 : return "不是素数" if n == 2: return "是素数" for i in range(2,math.ceil(n**0.5)): if n % i == 0: return "不是素数" return "是素数"def count_func(num): resurt = 0 for i in range(num+1): if is_func(i) == "是素数": resurt += 1 return resurtwhile True: num = input("请输入数字:\n") if(num == "退出"): break try: num_int = math.floor(eval(num)) print("2到{}素数的个数为{}".format(num,count_func(num_int))) except: print("输入错误")
2.5 交换某两个变量的值
import mathdef change_value(func): def inner(num1,num2): return func(num2,num1) return inner@change_valuedef func1(num_a,nun_b): return num_a,nun_bwhile True: num_a = input("请输入数字1:\n") num_b = input("请输入数字2:\n") print("num_a={},num_b={}".format(num_a,num_b)) num_a,num_b=func1(num_a,num_b) print("交换后num_a={},num_b={}".format(num_a, num_b))