是每次调用
hanoi
函数的时候都会从头到尾执行,但是不是每一行都执行。
因为
hanoi
函数中有
if
语句。如果当时
n
==
1,就只会执行
if
分支中的
move(one,three);
一句,跳过整个
else
分支。
如果当时
n
!=
1,就会跳过
if
分支,只执行
else
分支里的语句:
{
hanoi(n-1,one,two,three);
move(one,three);
hanoi(n-1,two,one,three);
}
希望这样说,你能清晰一点。
其实不用害怕递归调用,虽然说调用自己,其实可以看成代码相同的另一个函数。譬如说一开始
n
=
3,你就当作是调用一个叫
hanoi3
的函数,里面只有
else
分支里的三个语句,其中两句是调用
hanoi2。hanoi2
里面也只有
else
分支里的三个语句,其中两句是调用
hanoi1。hanoi1
却是只有
if
分支里的一个语句。
function et(n as long) as long
if n <=1 then et=1 else et =n*et(n-1)
end function
用法: msgbox et(10)
手写代码,如有手误自查一下.
int fun(int n)
{
if((n==1)||(n==0))return 1;
return n*fun(n-1);
}
#include
int fun(int n)
{
if(n==1)return 1;
return n*fun(n-1);
}
int main()
{
int n,sum;
while(scanf("%d",&n)!=EOF)
{
sum=fun(n);
printf("%d\n",sum);
}
}
#include
int fun(int n)
{
if(n==1)return 1;
return n*fun(n-1);
}
int main()
{
int n,sum;
while(scanf("%d",&n)!=EOF)
{
sum=fun(n);
printf("%d\n",sum);
}
}
凯杰,采我的吧!嘻嘻