您的位置:首页 > 其它

关于递归问题的一些小例子

2013-12-12 19:22 232 查看
什么是递归???

程序的递归实现了某种类型的螺旋状while循环。while循环在循环体每次执行时必须取得某种进展,逐步迫近循环终止条件。递归函数也是如此,它在每次递归调用后必须越来越接近某种限制条件。

当递归函数符合这个限制条件时,它便不在调用自身。

经典的递归也就不多说了,像汉诺塔之类的,可以查查资料。

现在贴3个小例子,大家可以看看,用java实现的。很简洁。

1、编写一个方法用于验证指定的字符串是否为反转字符,返回true和false。请用递归算法实现。(反转字符串样式为"abcdedcba")。

2、一列数的规则如下: 1、12、123、1234、12345、123456......,求第n个数的递归算法(n<=9)。

3、将一整数逆序,如987654321变为123456789。

要求,当然是不能变成字符串处理,必须使用递归。

public class Test{

public static boolean f1(char[] str,int from ,int to){
if(from >= to) return true;
if(str[from++]!=str[to--]) return false;
return f1(str,from,to);
}
public static int f2(int n){
return (n<=1?1:f2(n-1)*10+n);
}
public static int f3(int m, int n){
return (m<10?m:f3(m/10,n-1)+(m%10)*(int)(Math.pow(10, n-1)));
}
public static void main(String[] args) {

String aa="abcddcba";
char[] bb=aa.toCharArray();
System.out.println(Test.f1(bb,0,bb.length-1));
System.out.println(Test.f2(9));
System.out.println(Test.f3(123456789,9));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: