我一直没弄懂什么是递归算法,①那位大哥能给我简单描述下,②在演示一段小代码,③简单说说这种算法一般应

用在哪些场合?④出一个简单的题目让我做做?这曾经是一个公司的面试题,所以我得慎重点!还有我是学C#和JAVA的,请各位大侠别用其他语言的案例,我看不懂... 用在哪些场合?④出一个简单的题目让我做做?这曾经是一个公司的面试题,所以我得慎重点!还有我是学C#和JAVA的,请各位大侠别用其他语言的案例,我看不懂 展开
 我来答
topjiujiu
2012-04-26 · TA获得超过148个赞
知道答主
回答量:102
采纳率:0%
帮助的人:86.3万
展开全部
/**
* 概念介绍:
* 递归是一种方法(函数)调用自已编程技术。
* 递归就是程序设计中的数学归纳法。
* 例如: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
*/

/**
* 总结:
* 使用非递归的方式更简洁,更易懂,运行效率更高,为什么还要用递归的算法呢。
* 递归使规模逐渐降低的方式解决问题,以这种统一的方式解决足够复杂的问题。
*/
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式