两个递归程序(数组最大元素,汉诺塔)
1、递归返回数组中最大元素
//返回数组中最大元素 int findMax(int a[], int n) { int next = 0; if (n == 1) return a[0]; next = findMax(&a[1], n-1); return a[0]>next ? a[0] : next; }
2、汉诺塔
/* 汉诺塔:把盘子从A驻移动到C柱,大盘子时刻不能在小盘子之上 输入:n(盘子数目) 输出:步骤 */ int hanoid(char A, char B, char C, int n) { if (n == 0) return 0; if (n == 1) { printf("Move #%d from %c to %c\n", n, A, C); return 0; } else { hanoid(A, C, B, n-1); //hanoid(A, B, C, 1); printf("Move #%d from %c to %c\n", n, A, C); hanoid(B, A, C, n-1, step+2); } return 0; }