累加的递归:
临摹老师的代码
#include// Recursive addition. int addTo(int paraN) { int tempSum; printf("entering addTo(%d)rn", paraN); if (paraN <= 0) { printf(" return 0rn"); return 0; } else { tempSum = addTo(paraN - 1) + paraN; printf(" return %drn", tempSum); return tempSum; }// Of if }// Of addTo // A clear version. int clearAddTo(int paraN) { if (paraN <= 0) { return 0; } else { return clearAddTo(paraN - 1) + paraN; }// Of if }// Of clearAddTo // Test the addTo function. void addToTest() { int n, sum; printf("---- addToTest begins. ----rn"); n = 5; sum = addTo(n); printf("rn0 adds to %d gets %d.rn", n, sum); n = 1; sum = addTo(n); printf("rn0 adds to %d gets %d.rn", n, sum); n = -1; sum = addTo(n); printf("rn0 adds to %d gets %d.rn", n, sum); printf("---- addToTest ends. ----rn"); }// Of addToTest // The entrance. void main() { addToTest(); }// Of main
运行结果
---- addToTest begins. ---- entering addTo(5) entering addTo(4) entering addTo(3) entering addTo(2) entering addTo(1) entering addTo(0) return 0 return 1 return 3 return 6 return 10 return 15 0 adds to 5 gets 15. entering addTo(1) entering addTo(0) return 0 return 1 0 adds to 1 gets 1. entering addTo(-1) return 0 0 adds to -1 gets 0. ---- addToTest ends. ----
汉罗塔问题:
临摹老师的代码
#include// Hanoi void hanoi(int paraN, char paraSource,char paraDestination,char paraTransit) { if (paraN <= 0) { return; } else { hanoi(paraN -1,paraSource,paraTransit,paraDestination); printf("%c -> %c rn",paraSource,paraDestination); hanoi(paraN - 1,paraTransit,paraDestination,paraSource); }// of if }// of hanoi // Test the hanoi function. void hanoiTest() { printf("----addToTest begins.----rn"); printf("2 platesrn"); hanoi(2,'A','B','C'); printf("3,platern"); hanoi(3,'A','B','C'); printf("----addToTest ends.-----rn"); }// of addToTest //the entrance. void main() { hanoiTest(); }// of main
运行结果
----addToTest begins.---- 2 plates A -> C A -> B C -> B 3,plate A -> B A -> C B -> C A -> B C -> A C -> B A -> B ----addToTest ends.-----



