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

什么是递归???

程序的递归实现了某种类型的螺旋状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));
} 
}  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值