友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
合租小说网 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

C语言设计-第15部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!




  如果 n=3,则:

谭浩强      C 语言程序设计               2001 年 5 月 1 日

A。 将 A 上的 n…1(等于 2,令其为 n‘)个圆盘移到 B(借助于 C),步骤如下:
(1)将 A 上的 n‘…1(等于 1)个圆盘移到 C 上。
(2)将 A 上的一个圆盘移到 B。
(3)将 C 上的 n‘…1(等于 1)个圆盘移到 B。
B。 将 A 上的一个圆盘移到 C。
C。 将 B 上的 n…1(等于 2,令其为 n‘)个圆盘移到 C(借助 A),步骤如下:
(1)将 B 上的 n‘…1(等于 1)个圆盘移到 A。
(2)将 B 上的一个盘子移到 C。
(3)将 A 上的 n‘…1(等于 1)个圆盘移到 C。
   到此,完成了三个圆盘的移动过程。
    从上面分析可以看出,当 n 大于等于 2 时,移动的过程可分解为三个步骤:
第一步  把 A 上的 n…1 个圆盘移到 B 上;
第二步  把 A 上的一个圆盘移到 C 上;
第三步  把 B 上的 n…1 个圆盘移到 C 上;其中第一步和第三步是类同的。
当 n=3 时,第一步和第三步又分解为类同的三步,即把 n‘…1 个圆盘从一个针移到另一
个针上,这里的 n‘=n…1。 显然这是一个递归过程,据此算法可编程如下:
move(int n;int x;int y;int z)

    if(n==1)
      printf(〃%c……》%cn〃;x;z);
    else
    {
      move(n…1;x;z;y);
      printf(〃%c……》%cn〃;x;z);
      move(n…1;y;x;z);
    }

main()

    int h;
    printf(〃ninput number:n〃);
    scanf(〃%d〃;&h);
    printf(〃the step to moving %2d diskes:n〃;h);
    move(h;'a';'b';'c');


    从程序中可以看出;move 函数是一个递归函数,它有四个形参 n;x;y;z。n 表示圆盘数,
x;y;z 分别表示三根针。move 函数的功能是把 x 上的 n 个圆盘移动到 z 上。当 n==1 时,直
接把 x 上的圆盘移至 z 上,输出 x→z。如 n!=1 则分为三步:递归调用 move 函数,把 n…1 个
圆盘从 x 移到 y;输出 x→z;递归调用 move 函数,把 n…1 个圆盘从 y 移到 z。在递归调用过
程中 n=n…1,故 n 的值逐次递减,最后 n=1 时,终止递归,逐层返回。当 n=4 时程序运行的
结果为:


    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 数组作为函数参数

谭浩强      C 语言程序设计               2001 年 5 月 1 日

数组可以作为函数的参数使用,进行数据传送。数组用作函数参数有两种形式,一种是
把数组元素(下标变量)作为实参使用;另一种是把数组名作为函数的形参和实参使用。
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(i=0;i
返回目录 上一页 下一页 回到顶部 0 0
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!