//写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,
//例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19
int DigitSum(int n)
{
//for (i = n; i; i / 10)
//{
// arr[count] = i % 10;
// count++;
//}
if (n == 0)
return 0;
return n % 10 + DigitSum(n / 10);
}
4.汉诺塔问题
//3级汉诺塔的移动A->C,A->B,C->B,A->C,B->A,B->C,A->C
//n为盘子的个数,a,b,c为三个柱子
void Move(int n, char a, char b)
{
count++;
printf("第%d次移动 Move %d: Move from %c to %c !\n", count, n, a, b);
}
void Hanoi(int n, char a, char b, char c)
{
if (n == 1)
{
Move(n, a, c);
}
else
{
Hanoi(n - 1, a, c, b);
Move(n, a, c);
Hanoi(n - 1, b, a, c);
}
}
5. 递归实现n的阶乘
//递归实现n的阶乘
int Fact(int n)
{
if (n <= 1)
{
return 1;
}
return n * Fact(n - 1);
}