您的位置:首页 > 其它

蓝桥杯常用算法知识点:【递归】数字打印

2016-03-14 21:49 393 查看
递归:数字处理

A 0-10打印

package com.aiqiongdiao;
public class Main {
public static void f(int n){	//用递归打印0-n
if(n<0){   //出口:不符合!!!
return;   //-1还没打印就被截取下来,0就要打印
}
f(n-1);   //交给下属
System.out.println(n);  //自己做一点:打印n
}
public static void f2(int begin,int end){	//用递归打印0-n(自己第一次打印最小)
if(begin>end){   //出口:按规律增长出错!!!
return;
}
System.out.println(begin);
f2(begin+1,end);
}
public static void main(String[] args) {
f(10);
f2(2,10);   //当你无从下手,是时候加参数了
}
}


注意:

递归的要素:

1.寻找相似,构成主体

2.if出口设置结束

=========================================

B n-10打印
package com.aiqiongdiao;
public class Main {
public static int f(int a[],int begin){
if(begin==a.length){    //当下标等于a.length(也就是越界)的时候,返回0
return 0;
}
return f(a,begin+1)+a[begin];   //一个指标一个数组
}
public static void main(String[] args) {
int a[] = {2,5,3,9,12,7};
System.out.println(f(a,0));   //输出总和:传数组和起始
}
}


注意:

指标经常是数组添加的元素

==========================================

C 比较字符串

package com.aiqiongdiao;
public class Main {
/**
* 比较字符串
* @param args
*/
public static boolean f(String s1,String s2){
if(s1.length()!=s2.length()){  //错的出口:判断的话,先看长度
return false;
}
if(s1.length()==0){
return true;    //对的出口,0的时候就对了
}

if(s1.charAt(0)!=s2.charAt(0)){
return false;   //错的出口:判断内容
}

return f(s1.substring(1),s2.substring(1));   //切掉1后吧剩下的拿给下属
}

public static void main(String[] args) {
System.out.println(f("abc","abc"));
}
}


===========================================================================

递归相似性的感觉:

f(1){

f(2){

f(3){

...

}

}

}

//不同大的层次
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: