递归:程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
实例:
1.一个整数, 大于 0, 不用循环和本地变量, 按照 n, 2n, 4n, 8n 的顺序递增, 当值大于 5000 时, 把值按照指定顺序输出来。
例: n=1237
则输出为:
1237,
2474,
4948,
9896,
9896,
4948,
2474,
1237,
提示: 写程序时, 先致谢按递增方式的代码, 写好递增的以后, 再增加考虑递减部分
代码:
1 import java.util.Scanner; 2 3 public class demo { 4 //递归函数 5 public static void fun(int i){ 6 System.out.println(i);//先输出一下i值用于输出递增数据 7 if(i<=5000){//满足条件调用自身 8 fun(2*i); 9 } 10 System.out.println(i);//用于输出递减 11 } 12 public static void main(String[] args) { 13 System.out.println("请输入一个整数:(小于5000)"); 14 Scanner scanner = new Scanner(System.in); 15 int i= scanner.nextInt(); 16 //调用递归函数 17 fun(i); 18 } 19 }
2.第 1 个人 10, 第 2 个比第 1 个人大 2 岁, 依次递推, 请用递归方式计算出第 8个人有多大?
1 import java.util.Scanner; 2 3 public class demo { 4 //递归函数 5 public static int computeAge(int n) 6 { 7 if(n==1) return 10; 8 return computeAge(n-1) + 2; 9 } 10 //主方法程序入口 11 public static void main(String[] args) { 12 //输入一个整数 13 System.out.println("请选择计算第几位的年龄:"); 14 Scanner scanner = new Scanner(System.in); 15 int i= scanner.nextInt(); 16 //调用递归函数 17 System.out.println("第"+i+"位的年龄是"+computeAge(i)); 18 } 19 }