递归算法到底是什么意思?有高手能用一个简单点的代码演示一下么?
发布网友
发布时间:2022-05-12 07:34
我来回答
共1个回答
热心网友
时间:2024-02-19 18:12
递归
在我看来起就是就循环的高级使用
看这道题目 求自然数N的阶乘 (N的阶乘= 1*2*3*。。。。*N)
一般程序员可能会马上这样写
public int jiecheng(int n)
{
int rs=1,i=1;
for(i=1;i<=n,i++)
{
rs*=i;
}
return rs;
}
其实简单的功能已经实现了,但是高手或者说熟悉递归的人会这样写
public int jiecheng(int n)
{
if(n==1)
{
return 1;
}
else
{
return n*jiecheng(n-1);
}
}
到这里你可以对比这两种写法,显然第二种更简练!
好了到这里再说说递归的概念
函数之间的调用 称为主调函数和被调函数 递归恰恰属于特殊的一个
即自己调用自己
其实上面两个函数都是有问题的 因为传入的参数有可能是负数
因此在开始计算之前应该对参数做个效验
if(n<=0){throw new Exception("参数不合法");} 当然在定义函数的地方要加上 throws Exception
第二隐患时当n特别大时 ,那么结果 int类型显然是存放不了的
就说这么多