函数8

作者: 时间:2020-07-09 点击数:

 汉诺塔问题描述:
分析:
(1)move(n,a,b,c)     a:原柱   b:辅柱   c:目标柱,输出移动步骤
(2)n=1    直接从a到c
(3)move(n,a,b,c)   分解为3个小问题:move(n-1,a,c,b);  直接从a到c;move(n-1,b,a,c);
总结:
  优点:程序简洁,可读性强
        能解决一些非递归难以解决的问题。
  缺点:占用较多的机器时间和存储空间        (保存现场、恢复现场)
        解决问题的范围有限。

void move(int n,int a,int b,int c){
if (n==1) printf("%d-->%d\n",a,c);
else
{
     move(n-1,a,c,b);
  printf("%d-->%d\n",a,c);
  move(n-1,b,a,c); }
}
int gcd(int m,int n){
int c;
if (n==0) c=m;
else
 c=gcd(n,m%n);
return c;}
float ave(int a[],int n){
float m;
if (n==1) m=a[0];
else
 m=(ave(a,n-1)*(n-1)+a[n-1])/n;
return m;}

上一页 [1] [2]

Copyright© 2020 Anyang Institute of Technology.All rights reserved.

学院地址:河南省安阳市黄河大道西段