文章目录
一、意义
1. 举例
经典年龄游戏
问第五个多少岁,他说比第四个大两岁。
问第四个多少岁,他说比第三个大两岁。
问第三个多少岁,他说比第二个大两岁。
问第二个多少岁,他说比第一个大两岁。
问第一个多少岁,他说10岁了。
问:第五个人的年龄?
递归样式
a g e ( 5 ) = a g e ( 4 ) + 2 age(5)=age(4)+2 age(5)=age(4)+2
a g e ( 4 ) = a g e ( 3 ) + 2 age(4)=age(3)+2 age(4)=age(3)+2
a g e ( 3 ) = a g e ( 2 ) + 2 age(3)=age(2)+2 age(3)=age(2)+2
a g e ( 2 ) = a g e ( 1 ) + 2 age(2)=age(1)+2 age(2)=age(1)+2
a g e ( 1 ) = 10 age(1)=10 age(1)=10
a g e ( 2 ) = 10 + 2 = 12 age(2)=10+2=12 age(2)=10+2=12
a g e ( 3 ) = 12 + 2 = 14 age(3)=12+2=14 age(3)=12+2=14
a g e ( 4 ) = 14 + 2 = 16 age(4)=14+2=16 age(4)=14+2=16
a g e ( 5 ) = 16 + 2 = age(5)=16+2= age(5)=16+2= 18 18 18
递归要素
公式: a g e ( n ) = a g e ( n − 1 ) + 2 age(n)=age(n-1)+2 age(n)=age(n−1)+2
边界:第一个人的年龄
2. 意义
递归就是函数自己调用自己。比如上面的游戏可以用下面的程序来实现:
int age(int n) { if (n == 1) return 10; // 边界 return age(n-1) + 2; // 公式 }而
return的内容就会这样执行:
当 n = 5 n=5 n=5,
a g e ( 5 ) = a g e ( 4 ) + 2 age(5)=age(4)+2 age(5)=age(4)+2
a g e ( 4 ) = a g e ( 3 ) + 2 age(4)=age(3)+2 age(4)=age(3)+2
a g e ( 3 ) = a g e ( 2 ) + 2 age(3)=age(2)+2 age(3)=age(2)+2
a g e ( 2 ) = a g e ( 1 ) + 2 age(2)=age(1)+2 age(2)=age(1)+2
a g e ( 1 ) = 10 age(1)=10 age(1)=10
a g e ( 2 ) = 10 + 2 = 12 age(2)=10+2=12 age(2)=10+2=12
a g e ( 3 ) = 12 + 2 = 14 age(3)=12+2=14 age(3)=12+2=14
a g e ( 4 ) = 14 + 2 = 16 age(4)=14+2=16 age(4)=14+2=16
a g e ( 5 ) = 16 + 2 = age(5)=16+2= age(5)=16+2= 18 18

博客围绕递归算法展开,通过经典年龄游戏阐述递归意义与要素。还分析多个递归算法问题,如队尾身高、斐波那契数列、楼梯走法、辗转相除、角谷猜想步数及数的计算等,给出各问题的审题思路与参考答案。
最低0.47元/天 解锁文章
2774

被折叠的 条评论
为什么被折叠?



