智一面的面试题提供python的测试题
使用地址:http://www.gtalent.cn/exam/interview?token=906315a76b5c14231889351088713f76
题目
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
解法1 递归方法
程序分析:
兔子的规律为数列1,1,2,3,5,8,13,21.... 有点像斐波那契数列,只是开始从1
def rabbit(n):
if n==1 or n==2:
return 1
else:
return rabbit(n-1)+rabbit(n-2)
print("第10个月兔子数量:",rabbit(10))
运行结果
解法2 列表1
分析和解法1类似,只是用列表实现
def rabbit(n):
count = [1,0,0] #将兔子成长期分为三个月
for i in range(1,n): #每个月更新一次不同成长期的兔子对数
count[2] = count[2] + count[1]
count[1] = count[0]
count[0] = count[2]
return count[0]+count[1]+count[2] #返回兔子对数总数
n = int(input("查看第几个月的兔子对数:"))
rabbit_sum = rabbit(n)
print("第%d个月的兔子对数为%d"%(n,rabbit_sum))
运行结果
————————————————