递归算法的简单应用
为了确保递归函数不会导致无限循环,它应具有以下属性: 一个简单的 基本案例(basic case) (或一些案例) —— 能够不使用递归来产生答案的终止方案。 一组规则,也称作 递推关系(recurrence relation) ,可将所有其他情况拆分到基本案例。 1、以相反的顺序打印字符串 /** 输入:["h","e","l","l","o"] 输出:["o","l","l","e","h"] */ public class PrintReverseDemo { public static void main(String[] args) { printReverse("apple".toCharArray()); } private static void printReverse(char[] str) { helper(0, str); } private static void helper(int index, char[] str) { if (null == str || index >= str.length) { return; } helper(index + 1, str); System.out.print(str[index]); } } 2、两两交换链表中的节点 /** * 给定 1->2->3->4, 你应该返回 2->1->4->3. */