黑马程序员技术交流社区
标题:
计算机是怎么处理递归的?效率比循环高吗?
[打印本页]
作者:
黑骏马
时间:
2013-8-1 02:16
标题:
计算机是怎么处理递归的?效率比循环高吗?
本帖最后由 黑骏马 于 2013-8-1 02:25 编辑
比如,求n! 一般都会写这两种方法:
1.循环
public static int Jiecheng(int n)
{
int nJiecheng = 1;
if (n == 0 || n == 1)
{
return 1;
}
else
{
for (int i = 1; i <= n; i++)
{
nJiecheng *= i;
}
return nJiecheng;
}
}
复制代码
2.递归
public static int Jiecheng(int n)
{
if (n == 0 || n == 1)
{
return 1;
}
else
{
return Jiecheng(n - 1) * n;
}
}
复制代码
两种方法可以实现同样的功能,
递归的方法看起来很简洁,
但理解和描述起来要麻烦点儿,
计算机是怎么理解递归的?
效率会比用循环的方法高吗?
作者:
changvh
时间:
2013-8-1 07:21
线程栈有固定的大小,递归的层次太深,可能会溢出
作者:
sxdxgzr@126.com
时间:
2013-8-1 08:16
程序调用符合后进先出的原则利用栈来实现递归,递归由于函数调用会产生一定开销,效率较迭代低。
作者:
熊丽
时间:
2013-8-1 19:39
循环的效率更高,一般在写程序时不用递归。
作者:
lvjayj
时间:
2013-8-1 21:08
递归是不断引用函数自身,直到引用唯一已知的对象时停止。
递归还是必要的,它往往能把复杂问题分解成更为简单的步骤,而且很能反映问题的本质
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2