递归是程序设计中常用的一种算法,简单来说就是自己调用自己
在递归中需要注意两点:
递归是在函数中调用自己
在递归中,必须要有一个明确的条件作为结束,否则会形成死循环,一个劲的调用下去
从网上找几个例子转过来
一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,用递归算法实现
分析:第一位是1,第二位是1,第三位是第1位和第2位之和,后面每位都是前面两位之和
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;
}
}
}
以上代码的输出结果为
这个时候i=0 字符串的第0位为:a
这个时候i=1 字符串的第1位为:b
这个时候i=2 字符串的第2位为:c
这个时候i=3 字符串的第3位为:d
true
其实这里最重要的参数是判断位置,如果第一位和最后以为相同,则判断第二位和倒数第二位,当判断到中间时,所有字符都相同的时候,则为回文