def common_data(a, b, sub_common):
专注于为中小企业提供网站制作、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业仙游免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
if sub_common == 1:
return sub_common
else:
k1 = a % sub_common
k2 = b % sub_common
if k1 == k2 == 0:
return sub_common
else:
sub_common = sub_common - 1
return common_data(a, b, sub_common)
上面就是定义了一个递归函数求最大公约数
如
a = 16
b = 12
c = common_data(16,12,12) # 前两个参数就是需要求最大公约数的两个数,第三个参数就是那两个数中较小的那个数, 返回值就是最大公约数
第一张图
def f(n):
if n==1 or n==2:
return 1
else:
return f(n-1)+f(n-2)
b=f(6)
print(b)
源代码(注意源代码的缩进)
第一张图是斐波那契数列的递归程序,其过程是
f(6)=f(5)+f(4)=f(4)+f(3)+f(3)+f(2)=f(3)+f(2)+f(2)+f(1)+f(2)+f(1)+f(2)
=f(2)+f(1)+f(2)+f(2)+f(1)+f(2)+f(1)+f(2)
因为f(2)=f(1)=1所以上式=1+1+1+1+1+1+1+1=8
第二张图
def fact(n):
if n==0:
return 1
else:
return n*fact(n-1)
b=fact(5)
print(b)
源代码(注意源代码的缩进)
第二张图是阶乘的递归程序,其过程是
fact(5)=5*fact(4)=5*4*fact(3)=5*4*3*fact(2)=5*4*3*2*fact(1)=5*4*3*2*1*fact(0)
因为fact(0)=1,所以上式=5*4*3*2*1*1=120
详细解释,
因为n等于5所以执行else语句返回5*fact(4)
n等于4所以执行else语句返回4*fact(3)
n等于3所以执行else语句返回3*fact(2)
n等于2所以执行else语句返回2*fact(1)
n等于1所以执行else语句返回1*fact(0)
n等于0所以执行if语句返回1
然后反向回归
fact(1)=1*1
fact(2)=2*1*1
fact(3)=3*2*1*1
fact(4)=4*3*2*1*1
fact(5)=5*4*3*2*1*1=120
lambda不好写,写了前两个,把-2改为-7,改成-7后,我试过x必须大于4。-2时x可以从1开始
#递归
def power(n, x):
if abs(1/pow(n, x))abs(pow(10, -2)):
return 0#回归条件
else:
m = n + 1#递归因子
if(n%2==1):
return 1/pow(n, x)+power(m, x)#求和奇正
else:
return -1/pow(n, x)+power(m, x)#求和偶负
def power2(n, x):
sum = 0
while(1/pow(n,x)abs(pow(10, -2))):
if (n % 2 == 1):
sum+= 1 / pow(n, x)
else:
sum+=-1 / pow(n, x)
n += 1 # 递增
return sum
if __name__ == "__main__":
x = input("请输入幂数")
x = int(x)
n = 1
sum = power(n, x)
print(sum)
n=1
sum = power2(n, x)
print(sum)