关于递归问题的一些小例子
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。
要求,当然是不能变成字符串处理,必须使用递归。
程序的递归实现了某种类型的螺旋状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)); } }
相关文章推荐
- 关于CSS+DIV一些兼容问题常见的例子
- 应用mina的例子做了一些修改,但有关于连接数的问题
- 有关于递归函数的一些学习记录(Recursion)走楼梯,递归找出最两个数的大公约数,汉诺塔问题
- 应用mina的例子做了一些修改,但有关于连接数的问题
- 关于中文hook的一些问题的处理
- 关于使用PopupWindow的一些问题
- 关于泛型的一些问题
- 关于webservice框架cxf遇到的一些问题
- 关于IIS7.5下的web.config配置的一些问题
- Android 移动开发 关于LBS的一些认知 经纬度纠偏问题的研究
- 关于数学组合问题在m个球中取n个球-递归实现
- 关于单链表的一些常见问题
- 一些directx Show例子在visual studio 2005 中编绎的问题
- 关于Tomcat服务器的一些注意问题
- 关于Rails中显示xml文件的一些问题
- 关于jpeg文件部分解码获取其dct系数遇到的一些问题
- 关于一些基础的Java问题的解答(一)
- 关于Installshield里一些常见问题的解答—艾泽拉斯之海洋女神出品
- 关于Myeclipse的一些问题