- /**
- *
- * @author SunnyMoon
- */
- /**
- * 概念介绍:
- * 递归是一种方法(函数)调用自已编程技术。
- * 递归就是程序设计中的数学归纳法。
- * 例如:tri(n)=1 if n=1
- * tri(n)=n+tri(n-1) if n>1
- * 可能while循环方法执行的速度比递归方法快,但是为什么采用递归呢。
- * 采用递归,是因为它从概念上简化了问题,而不是因为它提高效率。
- */
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class Recursion {//求三角数字的递归算法:1,3,6,10,15,21, ......
- static int theNumber;
- public static void main(String[] args) throws IOException {
- System.out.print("Enter a number: ");
- theNumber = getInt();
- //使用递归时调用,默认
- int theAnswer = triangle(theNumber);
- //使用非递归时调用
- //int theAnswer=triangle2(theNumber);
- System.out.println("Result: " + theAnswer);
- }
- public static int triangle(int n) {//递归方法,循环调用
- if (n == 1) {
- return 1;
- } else {
- return (n + triangle(n - 1));
- }
- }
- public static int triangle2(int n) {//非递归方法
- int total = 0;
- while (n > 0) {
- total = total + n--;
- }
- return total;
- }
- public static String getString() throws IOException {
- InputStreamReader isr = new InputStreamReader(System.in);
- BufferedReader br = new BufferedReader(isr);
- String s = br.readLine();
- return s;
- }
- public static int getInt() throws IOException {
- String s = getString();
- return Integer.parseInt(s);
- }
- }
- /**
- * 运行结果:
- * Enter a number:
- * 3
- * Result: 6
- */
- /**
- * 总结:
- * 使用非递归的方式更简洁,更易懂,运行效率更高,为什么还要用递归的算法呢。
- * 递归使规模逐渐降低的方式解决问题,以这种统一的方式解决足够复杂的问题。
- */
递归算法(1)
最新推荐文章于 2023-06-25 19:46:36 发布