5个回答
展开全部
递归调用是一种特殊的嵌套调用,是某个函数调用自己,而不是另外一个函数。
递归调用一种解决方案,一种是逻辑思想,将一个大工作分为逐渐减小的小工作,比如说一个和尚要搬50块石头,他想,只要先搬走49块,那剩下的一块就能搬完了,然后考虑那49块,只要先搬走48块,那剩下的一块就能搬完了……,递归是一种思想,只不过在程序中,就是依靠函数嵌套这个特性来实现了。
例如:考虑如下计算阶乘的代码:
long fact(long n)
{
if(n==0||n==1) return 1L;
else return n*fact(n-1);
}
这个函数叫做fact,它自己调用自己,这个就是一个典型的递归调用,调用过程类似一个栈。
JAVA写的递归调用
public class TestDg {
public static void main(String[] args) {
System.out.println(method(5));
}
public static int method(int n) {
if (n == 1)
return 1;
else
return n * method(n - 1);
}
}
递归调用一种解决方案,一种是逻辑思想,将一个大工作分为逐渐减小的小工作,比如说一个和尚要搬50块石头,他想,只要先搬走49块,那剩下的一块就能搬完了,然后考虑那49块,只要先搬走48块,那剩下的一块就能搬完了……,递归是一种思想,只不过在程序中,就是依靠函数嵌套这个特性来实现了。
例如:考虑如下计算阶乘的代码:
long fact(long n)
{
if(n==0||n==1) return 1L;
else return n*fact(n-1);
}
这个函数叫做fact,它自己调用自己,这个就是一个典型的递归调用,调用过程类似一个栈。
JAVA写的递归调用
public class TestDg {
public static void main(String[] args) {
System.out.println(method(5));
}
public static int method(int n) {
if (n == 1)
return 1;
else
return n * method(n - 1);
}
}
参考资料: http://baike.baidu.com/view/1265506.html?wtp=tt
展开全部
递归就是调用自身,有直接递归和间接递归两种,直接递归是自己直接调用自己,间接递归是自己调用了需要调用自己的函数。
递归在子程序里面出现,对于C语言就是函数,BASIC和PASCAL等于里面函数和过程都可以做递归。
递归不是程序错误,而是程序技巧。
以上是我个人理解,这里有专业解释:http://baike.baidu.com/view/96473.htm
递归在子程序里面出现,对于C语言就是函数,BASIC和PASCAL等于里面函数和过程都可以做递归。
递归不是程序错误,而是程序技巧。
以上是我个人理解,这里有专业解释:http://baike.baidu.com/view/96473.htm
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
八皇后问题吧
procedure
try(i:integer);
var
j:integer;
begin
for
j:=1
to
8
do
if
(b[j]=0)
and(c[i+j]=0)
and
(d[i-j]=0)
then
//i指的是第几行,j是第几列,b【】存储状态,c【】副对角线,d【】主对角线
begin
a[i]:=j;
b[j]:=1;
c[i+j]:=1;
d[i-j]:=1;
//我有个问题,没判断同行同列问题啊
if
i<8
then
try(i+1)
//如果还没放够8颗,放下一个。
else
print;
b[j]:=0;
c[i+j]:=0;
d[i-j]:=0;
清除本次状态,搜下一个同行的位置。
end;
end;
//我2年没pascal了,过程已经不用begin和end括起来了?
procedure
try(i:integer);
var
j:integer;
begin
for
j:=1
to
8
do
if
(b[j]=0)
and(c[i+j]=0)
and
(d[i-j]=0)
then
//i指的是第几行,j是第几列,b【】存储状态,c【】副对角线,d【】主对角线
begin
a[i]:=j;
b[j]:=1;
c[i+j]:=1;
d[i-j]:=1;
//我有个问题,没判断同行同列问题啊
if
i<8
then
try(i+1)
//如果还没放够8颗,放下一个。
else
print;
b[j]:=0;
c[i+j]:=0;
d[i-j]:=0;
清除本次状态,搜下一个同行的位置。
end;
end;
//我2年没pascal了,过程已经不用begin和end括起来了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
猪吃猪肉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询