大家一起学python(10)

分享几道python基础逻辑题
#通过递归函数实现任意数的阶乘
def jiecheng(num):
if num ==1:
return num
else:
return num*jiecheng(num -1)
jiecheng(3)
#斐波那契数列[1,1,2,3,5,8,13,...],输入一个数列的位置数,返回斐波那契数列相应位置的值
def feibo(num):
if num ==1 or num ==2:
return 1
else:
return feibo(num-1)+feibo(num-2)
print(feibo(4))
#第三个月起每个月都生一对兔子小兔子到第三个月后每个月又生一对兔子,假如兔子不死,问每个月兔子的总数
#1,1,3,5,11,21,43
def rabbit(month):
if month ==1 or month ==2:
【大家一起学python(10)】return 1
else:
return rabbit(month-1)+2*rabbit(month-2)
print(rabbit(6))
#小明有一百块钱,打算买100本书,A书5元一本,B书3元一本,c书1元2本,小明一共有多少种买法
def xiaoming(money,book):
num =0
for ain range(int(money/5)):
for bin range(int(money/3)):
for cin range(book+1):
if a+b+c==bookand 5*a+3*b+0.5*c<=100:
num+=1
return num
print(xiaoming(100,100))
#N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。
# 例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。.
def josephus(n,k):
#n代表总人数,k代表报数的数字
List =list(range(1,n+1))
index =0
while List:#如果list不等于0就可以一直循环
temp = List.pop(0)
index+=1
if index==k:
print("sorry,你挂了 " +str(temp))
index=0
continue
List.append(temp)
if len(List)==1:
print("幸运儿是你:"+str(List))
break
josephus(6,5)

    推荐阅读