有關我對於漢諾塔c語言程式的理解,請問哪裡有問題?

void hanoi(int n,char a,char b,char c) { if(n==1) printf(”%c-->%c
”,a,c); else { hanoi(n-1,a,c,b); printf(”%c-->%c
”,a,c); hanoi(n-1,b,a,c); } } 在這裡,如果n==3,... void hanoi(int n,char a,char b,char c)
{
if(n==1)
printf(”%c-->%c
”,a,c);
else
{
hanoi(n-1,a,c,b);
printf(”%c-->%c
”,a,c);
hanoi(n-1,b,a,c);
}
}
在這裡,如果n==3,則會:
hanoi(2,a,c,b);
printf(”%c-->%c
”,a,c);
hanoi(2,b,a,c);
然後就會首先輸出一個a-->c
接著是對於 hanoi(2,a,c,b);的遞迴如下:
hanoi(1,a,c,b);
printf(”%c-->%c
”,a,c);
hanoi(1,b,a,c);
而當n==1時, printf(”%c-->%c
”,a,c);
所以 hanoi(2,a,c,b);的遞迴等效於:
printf(”%c-->%c
”,a,c);
printf(”%c-->%c
”,a,c);
printf(”%c-->%c
”,a,c);
同理,hanoi(2,b,a,c);的遞迴等效於:
printf(”%c-->%c
”,a,c);
printf(”%c-->%c
”,a,c);
printf(”%c-->%c
”,a,c);
所以按照這種理解,應該輸出的是7個a-->c
請問哪裡的理解有錯誤??? 展開
和諺
2022-07-25 18:17:01
  • 0

  • 29 點閱

  • 0 評論

其他人的答案

Copyright © 2024 https://hiqna.com 中華Hi知識