函数后缀带D为递归哦。
2 求阶乘
print("2.定义一个求阶乘的函数fact(n),并编写测试代码,输入整数n,递归与非递归")
n=int(input("请输入n的值(n>0):"))
def factD(n):
if n==1 or n==0:
return 1
else:
return fact(n-1)*n
def fact(n):
r=1
for i in range(1,n+1):r*=i
return r
factD(n)
fact(n)
print(str.format("这个是递归求的:{0} ! = {1}",n,factD(n)))
print(str.format("这个是非递归求的:{0} ! = {1}",n,fact(n)))
3.Fibonacci (斐波那契)数列
print("3.定义Fibonacci数列的函数fib(n),输出前20项(每项宽5个字符,右对齐),每行10个")
def fibD(n):
if(n==1 or n==2):
return 1
else:
return fibD(n-1) + fibD(n-2)
for i in range (1,21):
print('%5d'%fibD(i),end='')
if(i%10==0):
print("\n")
def fib(n):
s=[1,1]
for i in range(n):
s.append(s[-1]+s[-2])
for i in range(n):
print('%5d'%s[i],end='')
if (i+1)%10==0:
print("\n")
fib(20)
4.利用可变参数定义求任意个数数值的最小值的函数min_n(a,b,*c)
print("4.利用可变参数定义求任意个数数值的最小值的函数min_n(a,b,*c)")
def min_n(a,b,*c):
if c:
r=min(c)
return min(a,b,r)
else:
return min(a,b)
print('最小值为:',min_n(8,2))
print('最小值为:',min_n(16,1,7,4,15))
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191104171050874.png)
5.利用元组作为函数的返回值,求最大值,最小值和元素个数
print("利用元组作为函数的返回值,求最大值,最小值和元素个数")
def hanshu(s):
ma=max(s)
mi=min(s)
le=len(s)
return ma,mi,le
s1=[9,7,8,3,2,1,55,6]
s2=["apple","pear","melon","kiwi"]
s3="TheQuickBrownFox"
print(s1)
print(str.format("最大值:{0},最小值:{1},元素个数:{2}",hanshu(s1)[0],hanshu(s1)[1],hanshu(s1)[2]))
print(s2)
print(str.format("最大值:{0},最小值:{1},元素个数:{2}",hanshu(s2)[0],hanshu(s2)[1],hanshu(s2)[2]))
print(s3)
print(str.format("最大值:{0},最小值:{1},元素个数:{2}",hanshu(s3)[0],hanshu(s3)[1],hanshu(s3)[2]))
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191104171115138.png)