按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
long f1(int p)
{
int k;
long r;
long f2(int);
kp*p;
rf2(k);
return r;
}
long f2(int q)
{
long c1;
int i;
for(i1;i 从程序中可以看出;move函数是一个递归函数,它有四个形参n;x;y;z。n表示圆盘数,x;y;z分别表示三根针。move函数的功能是把x上的n个圆盘移动到z上。当n1时,直接把x上的圆盘移至z上,输出x→z。如n1则分为三步:递归调用move函数,把n1个圆盘从x移到y;输出x→z;递归调用move函数,把n1个圆盘从y移到z。在递归调用过程中nn1,故n的值逐次递减,最后n1时,终止递归,逐层返回。当n4 时程序运行的结果为:
input number:
4
the step to moving 4 diskes:
a→b
a→c
b→c
a→b
c→a
c→b
a→b
a→c
b→c
b→a
c→a
b→c
a→b
a→c
b→c
8。7 数组作为函数参数
数组可以作为函数的参数使用,进行数据传送。数组用作函数参数有两种形式,一种是把数组元素(下标变量)作为实参使用;另一种是把数组名作为函数的形参和实参使用。
1。 数组元素作函数实参
数组元素就是下标变量,它与普通变量并无区别。 因此它作为函数实参使用与普通变量是完全相同的,在发生函数调用时,把作为实参的数组元素的值传送给形参,实现单向的值传送。例5。4说明了这种情况。
【例8。7】判别一个整数数组中各元素的值,若大于0 则输出该值,若小于等于0则输出0值。编程如下:
void nzp(int v)
{
if(v》0)
printf(〃%d 〃;v);
else
printf(〃%d 〃;0);
}
main()
{
int a'5';i;
printf(〃input 5 numbersn〃);
for(i0;i