视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
java中该怎样使用递归?
2025-09-29 00:00:17 责编:小OO
文档
同问

java中递归算法是什么怎么算的? 

/** 

 * 概念介绍: 

 * 递归是一种方法(函数)调用自已编程技术。 

 * 递归就是程序设计中的数学归纳法。 

 * 例如: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 

 */  

  

/** 

 * 总结: 

 * 使用非递归的方式更简洁,更易懂,运行效率更高,为什么还要用递归的算法呢。 

 * 递归使规模逐渐降低的方式解决问题,以这种统一的方式解决足够复杂的问题。 

 */下载本文

显示全文
专题