package com.liaojianya.chapter1; /** * This program demonstrates the use of recursion method. * Implementing 1 + 2 + 3 + ... + n. * @author LIAO JIANYA * 2016年7月21日 */ public class RecursionMethod { public static void main(String[] args) { RecursionMethod rm = new RecursionMethod(); long start = System.currentTimeMillis(); int result1 = rm.addNonrecursion(100); System.out.println("非递归方法计算1+2+3+...+100结果是: " + result1); long end = System.currentTimeMillis(); System.out.println("非递归方法计算时间为:" + (end - start)); start = System.currentTimeMillis(); int result2 = rm.addRecursion(100); System.out.println("递归方法计算1+2+3+...+100结果是: " + result2); end = System.currentTimeMillis(); System.out.println("递归方法计算时间为:" + (end - start)); } //nonrecursion method to implement the calculation public int addNonrecursion(int n) { int result = 0; for(int i = 0; i <= n; i++) { result += i; } return result; } //recursion method to implement the calculation public int addRecursion(int n) { if(n <= 1) { return n; } return n + addRecursion(n - 1); } }
运行结果:
非递归方法计算1+2+3+...+100结果是: 5050 非递归方法计算时间为:1 递归方法计算1+2+3+...+100结果是: 5050 递归方法计算时间为:0
分析:递归通过对方法本身的压栈和出栈的方式,将每一层的结果逐级返回。并且递归一定要有终止条件,否则会出现死循环。
时间: 2024-11-07 01:48:31