编写河内塔程序帕斯卡(紧急! ) 100

发布于 科技 2024-04-25
11个回答
  1. 匿名用户2024-01-27

    不,这是实际和正式参数表的问题。

    调用函数时输入的参数是实际参数。

    您在此处使用的是 value 参数。

    实际参数将值传递给形式参数。

    形式参数在函数内部执行,而不是实际参数。

    当函数中的形式参数与主程序中的变量同名时,函数中的变量标识符表示形式参数,而主程序中的变量无效,即主程序中的变量无效。

    主程序中变量的作用域:

    整个程序“减去”包含与程序中的变量同名的变量或形式参数的函数。

    由于进程的递归。

    会有很多“A”。

    总读取量有多大。

    有多少个“A”就有多少个

    虽然都是 A,但程序正在运行。

    将它们视为不同的变量。

    每个递归调用一次程序。

    将创建一个新的 A

    原来的 A 暂时无效。

    等到递归进程运行完毕。

    原始 A 再次有效。

    此递归的当前 a 的真值仍然取决于实际参数和形式参数之间的一对一对应关系,例如:this call。

    move(n-1,b,a,c);

    由于过程是这样定义的。

    procedure move(n,a,b,c:integer);

    所以主流程中的b; 价值被传递了。

    a 在子进程中

    当子进程运行时。

    A 携带原始 b 的值来参与操作。

    直到子进程运行到最后。

    有点啰嗦。 让我们自己找到一些有关参数的信息。

  2. 匿名用户2024-01-26

    lz 错了,递归是有约束条件的,所以源程序应该是这样的:

    vara,b,c:integer;

    n:byte;

    procedure hanoi(n:byte;a,b,c:char);

    beginif n=1 then writeln('move',a,'to',c)

    else begin

    hanoi(n-1,a,c,b);

    writeln('move',a,'to',c);

    hanoi(n-1,b,a,c);

    end;end;

    begina:='a';b:='b’;c:='c';

    write('n=');readln(n);

    hanoi(n,a,b,c);

    end.

  3. 匿名用户2024-01-25

    lz 你这个程序编译和传递???

    a、b 和 c 都是整数字符,也是赋值字符???

    jjf,

  4. 匿名用户2024-01-24

    1、2 和 3 的值会随着递归的进行和退出而变化,例如在您的河内 (n-1,one,three,two) 中,2 和 3 的值在下一个循环中交换。

  5. 匿名用户2024-01-23

    以递归方式调用时,一二三的值会发生变化。

  6. 匿名用户2024-01-22

    var n,i,s:longint;

    procedure asd(a,b,c:char;n:longint);

    beginif n=1 then writeln(a,'->'和 c)输出过程。

    else begin

    asd(a,c,b,n-1);递归地,这里要求 lz 自己思考,为什么是 a、c、b

    writeln(a,'->',c);输出过程ASD(b,a,c,n-1); 递归地,也让 lz 思考结束;

    end;begin

    readln(n);

    s:=1;for i:=1 to n do s:=s*2;计数步数 writeln(s-1);

    asd('a','b','c',n);

    end.

  7. 匿名用户2024-01-21

    此问题的过程如下,使用递归调用:

    varn:longint;

    procedure hanoi(n:longint;a,b,c:char);

    beginif n=1 then writeln(n,' ',a,' ',c)else

    beginhanoi(n-1,a,c,b);

    writeln(n,' ',a,' ',c);

    hanoi(n-1,b,a,c);

    end;end;

    beginreadln(n);

    hanoi(n,'a','c','b');

    end.

  8. 匿名用户2024-01-20

    var n:longint;

    beginreadln(n);

    writeln(trunc(exp((n+1)*ln(2)))1);

    end.如果太大,请使用高精度。

    这是半决赛的第四个问题。

  9. 匿名用户2024-01-19

    这是一个递归调用的例子,下面页面有关于这个问题的更多细节,包括源程序、递归调用分析等。

  10. 匿名用户2024-01-18

    这是一个递归调用。

    参见“过程 hanoi (n:integer; a,b,c:char);和。

    hanoi(n,'a','b','c');第二句中的n在程序中传输到n,表示塔的列数;

    a'A转移到程序中,它表示存储在第一列上的板;

    b'B转移到程序中,代表储存在第二列上的板;

    c'转移到程序的 C 代表存储在第三列上的板;

    程序,既然已经动了,n自然会减少一个! 呼叫“河内(N-1,A,C,B); 它体现了 A 和 C 的交换。

  11. 匿名用户2024-01-17

    递归调用。 我曾经告诉一个家伙 C 版本。

相关回答
4个回答2024-04-25

# include

void hannuota(int n,char a,char b, char c); >>>More

7个回答2024-04-25

#include

void move(int n,char x,char y); >>>More

4个回答2024-04-25

n 板 a[0] a[n-1]。

在 B 的帮助下从 A 移动到 C >>>More

14个回答2024-04-25

使用随机数。

private static char constant =a','b','c','d','e'; >>>More

17个回答2024-04-25

在“新建”中创建一个项目,然后选择类型(通常为 win32 >>>More