`

递归算法(1)

阅读更多
  1. /**  
  2.  *  
  3.  * @author SunnyMoon  
  4.  */  
  5.   
  6.   
  7. /**  
  8.  * 概念介绍:  
  9.  * 递归是一种方法(函数)调用自已编程技术。  
  10.  * 递归就是程序设计中的数学归纳法。  
  11.  * 例如:tri(n)=1            if n=1  
  12.  *     tri(n)=n+tri(n-1)    if n>1  
  13.  * 可能while循环方法执行的速度比递归方法快,但是为什么采用递归呢。  
  14.  * 采用递归,是因为它从概念上简化了问题,而不是因为它提高效率。  
  15.  */  
  16.   
  17. import java.io.BufferedReader;   
  18. import java.io.IOException;   
  19. import java.io.InputStreamReader;   
  20.   
  21.   
  22. public class Recursion {//求三角数字的递归算法:1,3,6,10,15,21, ......   
  23.   
  24.     static int theNumber;   
  25.   
  26.     public static void main(String[] args) throws IOException {   
  27.         System.out.print("Enter a number: ");   
  28.         theNumber = getInt();   
  29.         //使用递归时调用,默认   
  30.         int theAnswer = triangle(theNumber);   
  31.         //使用非递归时调用   
  32.         //int theAnswer=triangle2(theNumber);   
  33.         System.out.println("Result: " + theAnswer);   
  34.     }   
  35.   
  36.     public static int triangle(int n) {//递归方法,循环调用   
  37.         if (n == 1) {   
  38.             return 1;   
  39.         } else {   
  40.             return (n + triangle(n - 1));   
  41.         }   
  42.     }   
  43.   
  44.     public static int triangle2(int n) {//非递归方法   
  45.         int total = 0;   
  46.         while (n > 0) {   
  47.             total = total + n--;   
  48.         }   
  49.         return total;   
  50.     }   
  51.   
  52.     public static String getString() throws IOException {   
  53.         InputStreamReader isr = new InputStreamReader(System.in);   
  54.         BufferedReader br = new BufferedReader(isr);   
  55.         String s = br.readLine();   
  56.         return s;   
  57.     }   
  58.   
  59.     public static int getInt() throws IOException {   
  60.         String s = getString();   
  61.         return Integer.parseInt(s);   
  62.     }   
  63. }   
  64.   
  65. /**  
  66.  * 运行结果:  
  67.  * Enter a number:   
  68.  * 3  
  69.  * Result: 6  
  70.  */  
  71.   
  72. /**  
  73.  * 总结:  
  74.  * 使用非递归的方式更简洁,更易懂,运行效率更高,为什么还要用递归的算法呢。  
  75.  * 递归使规模逐渐降低的方式解决问题,以这种统一的方式解决足够复杂的问题。  
  76.  */  
分享到:
评论

相关推荐

    易语言递归算法1

    在"易语言递归算法1"中,我们主要关注的是递归算法的应用。递归是计算机科学中一种强大的工具,它通过函数或过程自身调用自身的方式来解决问题。 递归算法通常包括两个基本部分:基本情况(Base Case)和递归情况...

    易语言源码递归算法1.rar

    在易语言源码递归算法1.rar这个压缩包中,很可能包含了多个易语言源代码文件,用于演示或教学如何使用递归解决各种问题。可能包括但不限于斐波那契数列、汉诺塔、图的深度优先搜索等经典递归算法的实现。这些源代码...

    实验1-递归算法1

    **实验1-递归算法1** 递归算法是一种在编程中广泛应用的方法,它通过函数自身调用自身来解决问题。在本实验中,我们将探讨递归的实现方式,并通过两个具体的例子——Fibonacci数列和全排列问题——来加深理解。 ##...

    5!递归算法和非递归算法

    递归算法和非递归算法 在计算机科学与编程领域中,递归算法与非递归算法是两种非常重要的计算方法。本文将详细介绍这两种算法的特点、应用场景以及如何实现它们,特别针对初学者及面试准备者。 #### 递归算法 ...

    VC对磁盘文件遍历搜索的递归算法和非递归算法

    在VC++(Visual C++)环境中,有多种方法可以实现这一目标,其中最常见的是递归算法和非递归算法。这两种方法各有优缺点,适用于不同的场景。 **递归算法**: 递归算法是一种基于函数自身调用解决问题的方法。在...

    .net 递归算法 .net 递归算法.net 递归算法

    在.NET编程环境中,递归算法是一种强大的工具,它允许函数或方法调用自身来解决复杂问题。递归的核心思想是将大问题分解为相同或相似的小问题,直到问题变得足够简单,可以直接得出答案。这种解决问题的方式在数据...

    acm递归算法总结竞赛

    1. **递归定义**:递归算法是函数或过程通过调用自身来解决问题的一种方法。每次调用都将问题分解为更小的部分,直到达到基本情况。 2. **基本原理**:递归算法通常包括两个部分:递归规则(如何将大问题分解为小...

    abap简单递归算法

    ### ABAP简单递归算法解析 #### 一、引言 ABAP(Advanced Business Application Programming)是一种用于SAP系统的编程语言。它不仅支持传统的过程化编程,还支持面向对象编程和Web开发。本文将深入探讨一个ABAP中...

    汉诺塔问题的非递归算法

    对于解决汉诺塔问题,传统方法是通过递归算法实现,即通过不断将问题规模缩小,直到简化到最基本的情况,然后逐步返回并解决每一层的子问题。然而,递归算法在处理大量圆盘时容易引起调用栈过深,导致效率低下。因此...

    递归算法与循环算法的分析

    1. 递归算法的定义:在程序设计中,在调用一个函数的过程中又出现直接或间接调用其函数本身的现象。 2. 循环算法的定义:在程序设计中,一个功能的实现需要不断的变化,有穷的循环判断条件,符合条件就继续循环,不...

    快速排序算法设计与分析总结 二叉树与树的转换前序、后序的递归、非递归算法,层次序的非递归算法的实现

    快速排序算法设计与分析总结 二叉树与树的转换前序、后序的递归、非递归算法,层次序的非递归算法的实现 二叉树与树的转换前序、后序的递归、非递归算法,层次序的非递归算法的实现,应包含建树的实现 实现树与...

    18.递归算法与递归算法应用.ppt

    18.递归算法与递归算法应用.ppt

    合并排序递归和非递归算法

    1. **空间效率**:递归算法可能会占用更多的栈空间,因为每次递归调用都会增加栈的深度。而非递归算法则通常需要额外的数据结构来存储待处理的任务。 2. **执行效率**:递归算法在某些情况下可能导致大量的函数调用...

    递归算法ppt让你快速上手

    "递归算法ppt让你快速上手" 递归算法是计算机科学中的一种重要算法思想,它可以解决许多复杂的问题。下面是递归算法的知识点总结: 1. 递归的定义:若一个对象部分地包含它自己,或用它自己给自己定义,则称这个...

    递归算法专题ppt

    1. **确定基本情况**:这是递归算法中最小的子问题,可以直接给出答案。 2. **定义递归规则**:如何将大问题分解为小问题,并通过这些小问题的解决方案组合成大问题的解决方案。 3. **分析递归深度**:递归调用的...

    程序设计中递归算法

    ### 递归算法在程序设计中的应用 #### 一、递归的概念与本质 递归是一种重要的编程思想,在计算机科学和数学领域都有广泛的应用。它指的是一个过程或函数直接或间接地调用自身来解决问题的方法。递归的核心在于将...

    递归算法的详解,各种常见递归算法

    递归算法是一种强大的编程技术,它通过函数或过程在解决问题时调用自身来解决更小规模的相同问题。递归的基本概念在于一个函数在定义中包含对自身的引用,或者问题的解决方案依赖于较小规模问题的解决方案。在程序...

    递归算法转为非递归算法

    递归算法转为非递归算法。方法、过程,用栈的原理

    利用递归算法求阶乘(VB6.0源代码)利用递归算法求阶乘

    在这个主题中,我们将深入探讨如何使用递归算法在VB6.0(Visual Basic 6.0)中计算阶乘。VB6.0是Microsoft开发的一款经典可视化编程环境,用于创建Windows应用程序。 阶乘是一个数学概念,表示一个正整数n的所有...

Global site tag (gtag.js) - Google Analytics