在面试的时候遇到了这样的一道笔试题目,就是利用递归求出1到100的和,也就是1+2+3+........+100。
怎么说呢,递归是一种思想,用大白话来说,就是自己调用自己。
如一个方法A(),然后在方法A()中再次调用自己,但是利用递归的时候特别需要注意的就是跳出递归的条件,否则的话就会出现死循环的情况,也就是一直在执行的某一个方法。
以下为简单的代码实现:
package com.ak.demo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
/**
* 利用递归实现求1+2+3+4+......+100的和(这里写为了求1到n的和了)
* @author Administrator
*
*/
public class RecursiveDemo {
public static void main(String[] args) {
//键盘输入
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
/*Scanner scan = new Scanner(System.in);
System.out.println("请输入要计算的最大值:");
int number;
try {
number = scan.nextInt();
int sum = recurisive(number);
System.out.println(sum);
} catch (Exception e) {
throw new RuntimeException("您输入的不是数字");
}*/
try {
System.out.println("请输入需要求和的最大值并按回车键结束:");
String number = in.readLine();
int sum = recurisive(Integer.parseInt(number));
System.out.println("所求的和为:" + sum);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 递归思想:简单的说就是自己调用自己,但是必须有一个出口,否则就会出现死循环的情况
* @param number
* @return
*/
public static int recurisive(int number){
if(1 == number){
return 1;
}else{
return number + recurisive(number - 1);
}
}
}