- 编写一个函数实现n^k,使用递归实现
int multi(int n, int k) {
if (1 == k) {
return n;
}
return n * multi(n, k - 1);
}
- 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和, 例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
int DigitSum(int n) {
if (n >= 0 && n <= 9) {
return n;
}
return DigitSum(n % 10) + DigitSum(n / 10);
}
- 编写一个函数 reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中的字符串操作函数。
void reverse_string(const char* str) {
if (*(str + 1) != NULL) {
reverse_string(str + 1);
}
printf("%c ", *str);
}
- 递归和非递归分别实现strlen的功能
递归:
int len(char* p) {
if (*p == NULL) {
return 0;
}
return 1 + len(p + 1);
}
非递归:
int len1(char* p) {
int len = 0;
while (*p != NULL) {
len++;
p++;
}
return len;
}
- 递归和非递归分别实现求n的阶乘
递归:
int fact(int n) {
if (1 == n) {
return 1;
}
return n * fact(n - 1);
}
非递归:
int fact1(int n) {
int result = n;
while (n > 1) {
result *= n - 1;
n--;
}
return result;
}
- 递归方式实现打印一个整数的每一位
void print(int n) {
if (n > 9) {
print(n / 10);
}
printf("%d ",n % 10);
}