问题:有 5 个人坐在一起,问第 5 个人多少岁,他说比第 4 个人大 2 岁。问第 4 个人多少岁,他说比第 3 个人大2岁。问第 3 人多少岁,他说比第 2个 人大 2 岁。问第2个人多少岁,他说比第 1 个人大 2 岁。最后问第 1 个人,他说他是 10 岁。编写程序,当输入第几个人时求出其对应的年龄。
- test(n) 输入的第几个人
- test( n -1 ) 前面一个人
- +2岁 每层的计算关系
- n == 1 终止的条件 第一个人
- test(n) = test(n-1) + 2 当前的人=前面一个人+2岁
def test(n):
if n == 1: # 结束的条件 第一个人
return 10
else:
return test( n-1 ) + 2
print(test(4))
斐波那契数列。0、 1、1、2、3、5、8、13、21、34…,除了第一个,第二个,其余的数据等于前两个数据之和,5=3+2,34=21+13
- f(n) 第几个数字
- f(n-1) f(n-2) 前面1个 2个数字
- 第一第二个数字,无法通过前面2个数字相加,所以是终止点
- f(n-1) + f(n-2) 每曾的关系 前2个相加
- f(n) = f(n-1) + f(n-2)
def f(n):
if n == 1:
return 0
elif n == 2:
return 1
else:
return f(n-1) + f(n-2)
print(f(7))