递归练习

字符串逆序

编写一个函数reverse_string(char* string)(递归实现),将参数字符串中的字符反向排列。

123456789101112131415161718192021
#include <stdio.h>#include <string.h>void reverse_string(char arr[]){    char tmp = arr[0];    int len = strlen(arr);    arr[0] = arr[len-1];    arr[len-1] = '\0';    if (strlen(arr+1) >= 2)     {        reverse_string(arr+1);    }    arr[len-1] = tmp;} int main() {    char arr[] = "abcdefghijklmn";    reverse_string(arr);    printf("%s\n",arr);    return 0;}

计算一个数字的每位之和

写一个递归函数DigitalSum(n),输入一个非负整数,返回组成它的数字之和。
例如:调用DigitalSum(1234),则返回1+2+3+4 = 10

123456789101112131415161718192021222324252627
#include <stdio.h>#include <string.h>int reverse_string(int num){    static int y = 0;    y = y + (num % 10);    num = num / 10;    if (num>9)    {        reverse_string(num);    }else    {        y = y + num;    }    return y;} int main() {    int x = 0;    int y = 0;    printf("计算一个数字每位之和\n");    printf("请输入一个数字:->");    scanf("%d",&x);    y = reverse_string(x);    printf("%d\n",y);    return 0;}

递归实现n的k次方

123456789101112131415161718192021222324252627
#include <stdio.h>#include <string.h>int kCiFang(int x,int k){    int a = x;    static int sum = 1;    sum = sum * a ;    k--;    if (k>0) {        kCiFang(x, k);    }    return sum;} int main() {    int k = 0;    int x = 0;    int y = 0;    printf("计算一个数的k次方\n");    printf("请输入这个数字:->");    scanf("%d",&x);    printf("请输入k:->");    scanf("%d",&k);    y = kCiFang(x,k);    printf("%d\n",y);    return 0;}
🔍 ×