在递归中须要注意两点:算法
1.递归是在函数中调用本身 函数
2.在递归中,必需要有一个明确的条件做为结束,不然会造成死循环,一个劲的调用下去oop
从网上找几个例子转过来post
============================================================spa
一列数的规则以下: 一、一、二、三、五、八、1三、2一、34...... 求第30位数是多少, 用递归算法实现code
分析:第一位是1,第二位是1,第三位是第1位和第2位之和,后面每位都是前面两位之和blog
class Revert { public static void main(String[] args) { int i = fn(8); System.out.println(i); } public static int fn(int n){ if(n == 1){ return 1; //第一位返回1 }else if(n == 2){ return 1; //第二位也返回1 }else{ return fn(n-1) + fn(n-2); //从第三位开始,每位返回前两位之和 } } }
=======================================================================递归
递归实现回文判断 回文: String s1 = "abcddcba" String s2 = "abcba"字符串
class loopWord { public static void main(String[] args) { boolean a = loopWord("abcdcba",0); System.out.println(a); } static boolean loopWord(String str, int i) { if (str.charAt(i) == str.charAt(str.length() - 1 - i)) { //判断是否相同 if (i == (str.length() + 1) / 2){ //判断是否到了最中间 return true; //若是都相同,返回true } System.out.println("这个时候i=" + i + " 字符串的第" + i +"位为:" + str.charAt(i)); //为方便观察,输出语句 return loopWord(str, i + 1); //若是第一位和最后觉得相同,则返回从第二位和倒数第二位 } else { return false; } } }
以上代码的输出结果为it
这个时候i=0 字符串的第0位为:a 这个时候i=1 字符串的第1位为:b 这个时候i=2 字符串的第2位为:c 这个时候i=3 字符串的第3位为:d true
其实这里最重要的参数是判断位置,若是第一位和最后觉得相同,则判断第二位和倒数第二位,当判断到中间时,全部字符都相同的时候,则为回文
==============================================================