手撕递归经典题目

本文通过8个经典递归实例,详细讲解了如何利用递归解决算法和数据结构问题,包括递归求阶乘、求和、打印数字、求斐波那契数列、汉诺塔问题等,深入浅出地阐述了递归的思想和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

递归:是指函数或者程序在运行时直接或是间接的调用自身产生的重入现象。一般来说,递归相比于用非递归解法解决问题来说,思路清晰,代码量少,但是消耗的空间会较多。我会将递归理解为,将问题分割成一个个小的子问题,而我们只需要解出最简单的问题,并且了解各个问题之间的关系,让函数或是程序自己解决剩下的问题。下面有几道较为经典的递归例题:

1. 递归求 N 的阶乘

思路:求N的阶乘用普通的循环来做非常简单。如果是递归的话我们只需要清楚1!(1的阶乘)是多少,最后返回的是N * 函数名(N - 1),剩下的交给函数自己解决。

代码:

2. 递归求和,递归求 1 + 2 + 3 + ... + 10

 思路:首先呢,我们需要自己计算最小的子问题,即 n=1的情况,就是从1加到1,也就是1。然后分成其他小的子问题交给函数自己处理,我们需要返回的是其之间的关系:加到10的话,返回10 + 函数名(10 - 1),加到n的话就返回n + 函数名(n - 1)。

代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值