求分析,代码是否完整。。
#include "hanoi.h"
#include <math.h> void main(){
hanoi(3, 'A','B','C');
}
void hanoi(int n, char a, char b, char c);
double mylog(int n);
void move(char a, char b);
void move(char a, char b){
printf("%c--->%c\n", a, b);
}
void hanoi(int n, char a, char b, char c){
if(n>0){ if(n == 1)
move(a, b);
else
{
hanoi(n-1, a, c, b);
move(a, b);
hanoi(n-1, c, b, a);
}
} }
[解决办法]
代码是完整的,“#include "hanoi.h"”可以注掉,没有用到未申明的函数。
不过格式太乱了,替你整理了一下,可以运行
//#include "hanoi.h"#include <math.h>void hanoi(int n, char a, char b, char c);double mylog(int n);void move(char a, char b);void main(){ hanoi(3, 'A','B','C');} void move(char a, char b){ printf("%c--->%c\n", a, b);}void hanoi(int n, char a, char b, char c){ if(n>0) { if(n == 1) move(a, b); else { hanoi(n-1, a, c, b); move(a, b); hanoi(n-1, c, b, a); } } }
[解决办法]
楼上强大。
申明了double mylog(int n);却没有定义。虽然你的程序好像没有用到这个函数
[解决办法]
//#include "hanoi.h"#include <stdio.h>#include <math.h>void hanoi(int n, char a, char b, char c);//double mylog(int n);void move(char a, char b);void main(){ hanoi(4, 'A','B','C');}void move(char a, char b){ printf("%c--->%c\n", a, b);}void hanoi(int n, char a, char b, char c){ if(n>0) { if(n == 1) move(a, b); else { hanoi(n-1, a, c, b); move(a, b); hanoi(n-1, c, b, a); } }} double mylog(int n)//log(n!) 1)递归的终止条件 2)递归公式 { if(n >= 0) { if(n == 0 )//1)递归的终止条件 return 0; else//2)递归公式 return log10(n)+mylog(n-1); } }