'''
python 3.0以后, reduce已经不在built-in function里了, 要用它就得from functools import reduce.
reduce的用法
reduce(function, sequence[, initial]) -> value
Apply a function of two arguments cumulatively to the items of a sequence,
from left to right, so as to reduce the sequence to a single value.
For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates
((((1+2)+3)+4)+5). If initial is present, it is placed before the items
of the sequence in the calculation, and serves as a default when the
sequence is empty.
意思就是对sequence连续使用function, 如果不给出initial, 则第一次调用传递sequence的两个元素,
以后把前一次调用的结果和sequence的下一个元素传递给function.
如果给出initial, 则第一次传递initial和sequence的第一个元素给function.
'''
from functools import reduce
ret = reduce(lambda x,y: x+y,[1,2,3,4])
print(ret)#结果是10
ret = reduce(lambda x, y: x+y, [1,2,3], 9)
print(ret)#结果是13
''' 一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。 如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?分析:经过月份01 23 4 5 6 7 8 9 10幼崽对数10 1 1 2 3 5成年对数01 1 2 3 5 8兔子对数11 2 3 58#显然兔子对数符合斐波那契数列'''def sum1(num):if num <3:return 1return sum1(num-1)+sum1(num-2)n = int(input('请输入兔子月数:'))print(sum1(n))'''欧几里得算法欧几里得算法又称辗转相除法,用于计算两个整数a,b的最大公约数gcd(a,b)基本算法:设a = qb + r其中 a,b,q,r都是整数,则gcd(a,b) = gcd(b,r),即gcd(a,b)=gcd(b,a%b)证明:a = qb + r如果 r = 0,那么a是b的倍数,此时显然b是a和b的最大公约数。如果 r !=0, 任何整除a和b的数必定整除 a-qb = r,而且同时整除b和r的数必定整除 qb+r = a ,所以a和b的公约集合与b和r的公约数集合是相同的特别的,a和b的最大公约数是相同的'''a = int(input('请输入第一个整数:'))b = int(input('请输入第二个整数:'))r = 0def f(n,m):if n',c)
else:
move(n-1,a,c,b)
move(1,a,b,c)
move(n-1,b,a,c)
print(move(10,'A','B','C'))
'''
def move(n,a,b,c):
if n==1:
print(a,'-->',c)
else:
move(n-1,a,c,b)
move(1,a,b,c)
move(n-1,b,a,c)
print(move(3,'A','B','C'))