累加的递归:
临摹老师的代码
#include <stdio.h>
// Recursive addition.
int addTo(int paraN)
{
int tempSum;
printf("entering addTo(%d)\r\n", paraN);
if (paraN <= 0) {
printf(" return 0\r\n");
return 0;
}
else
{
tempSum = addTo(paraN - 1) + paraN;
printf(" return %d\r\n", 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. ----\r\n");
n = 5;
sum = addTo(n);
printf("\r\n0 adds to %d gets %d.\r\n", n, sum);
n = 1;
sum = addTo(n);
printf("\r\n0 adds to %d gets %d.\r\n", n, sum);
n = -1;
sum = addTo(n);
printf("\r\n0 adds to %d gets %d.\r\n", n, sum);
printf("---- addToTest ends. ----\r\n");
}// 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 <stdio.h>
// 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 \r\n",paraSource,paraDestination);
hanoi(paraN - 1,paraTransit,paraDestination,paraSource);
}// of if
}// of hanoi
// Test the hanoi function.
void hanoiTest()
{
printf("----addToTest begins.----\r\n");
printf("2 plates\r\n");
hanoi(2,'A','B','C');
printf("3,plate\r\n");
hanoi(3,'A','B','C');
printf("----addToTest ends.-----\r\n");
}// 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.-----