C++知识点总结(29):递归基础

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

一、意义

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(n1)+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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值