一,累加递归
总代码
#include<stdio.h>
#include<stdlib.h>
int addTo(int paraN) {
int tempSum;
printf("entering addTo(%d)\n", paraN);
if (paraN <= 0) {
printf(" return 0\n");
return 0;
} else {
tempSum = addTo(paraN - 1) + paraN;
printf(" return %d\n", tempSum);
return tempSum;
}
}
void addToTest() {
int n, sum;
printf("---- addToTest begins. ----\n");
n = 5;
sum = addTo(n);
printf("\n0 adds to %d gets %d.\n", n, sum);
n = 1;
sum = addTo(n);
printf("\n0 adds to %d gets %d.\n", n, sum);
n = -1;
sum = addTo(n);
printf("\n0 adds to %d gets %d.\n", n, sum);
}
int main() {
addToTest();
return 0;
}
运行结果
汉诺塔
总代码
#include<stdio.h>
void hanoi(int paraN, char paraSource, char paraTransit, char paraDestination) {
if (paraN <= 0) {
return;
} else {
hanoi(paraN - 1, paraSource, paraDestination, paraTransit);
printf("%c -> %c\n", paraSource, paraDestination);
hanoi(paraN - 1, paraTransit, paraSource, paraDestination);
}
}
int main() {
int N;
printf("请输入想移动的盘子数:");
scanf("%d", &N);
char Source, Transit, Destination;
Source = 'A';
Transit = 'B';
Destination = 'C';
hanoi(N, Source, Transit, Destination);
return 0;
}
运行结果