这是我看刚刚看的剑指offer上的一道面试题:用递归实现链表从后往前输出(c或c++),
我突然想用java试试,然后就有了这样一个小算法题:
任意一个一维数组,用递归实现从右往昨打印输出,下标从0开始,
比如一个数组:{1,2,3}
打印:3,2,1
首先分析一下这个小题:从0开始进入递归,递归到数组最后一个元素的时候,开始回溯输出,
如下代码:
public class Main { public static void main(String[] args) { int[] arr = new int[] {1,2,3,4,5,6,7,8,9}; new Main().f(arr,0); } private void f(int[] arr,int index) { if(index<arr.length-1){ f(arr,index+1);//递归 } System.out.println(arr[index]); // 递归完毕后,回溯输出 } }
补充一点递归和数组的区别:
递归:你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,你继续打开它。若干次之后,你打开面前的门后,发现只有一间屋子,没有门了。然后,你开始原路返回,每走回一间屋子,你数一次,走到入口的时候,你可以回答出你到底用这你把钥匙打开了几扇门。
循环:你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门(若前面两扇门都一样,那么这扇门和前两扇门也一样;如果第二扇门比第一扇门小,那么这扇门也比第二扇门小,你继续打开这扇门,一直这样继续下去直到打开所有的门。但是,入口处的人始终等不到你回去告诉他答案。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律