首页 > 其他分享 >递归

递归

时间:2023-03-01 16:01:51浏览次数:28  
标签:return 递归 int factorial printf main

递归的两个必要条件:

  • 存在限制条件,当满足这个限制条件的时候,递归不再进行
  • 每次递归调用完之后越来越接近这个限制条件

练习1:接收一个整形数,按顺序输出它的每一位

#include <stdio.h>
void print(int n) {
    if (n > 9) {
        print(n / 10);
    }
    printf("%d ", n % 10);
}

int main() {
    unsigned int num = 0;
    scanf("%d", &num);
    // 递归
    print(num);
    return 0;
}

练习2:编写一个函数,不创建临时变量的情况下,求字符串的长度

int Strlen(char* str) {
    if (*str != '\0') {
        return 1 + Strlen(str + 1);
    }
    else {
        return 0;
    }
}

int main() {
    char arr[] = "once more";
    int len = Strlen(arr);// 数组传参,传入的是首元素的内存地址
    printf("len = %d", len);
    return 0;
}

练习3:求n的阶乘(不考溢出)

int factorial(int n) {
    if (n == 1) {
        return n;
    }
    else {
        return n * factorial(n - 1);
    }
}

int main() {
    int a = 4;
    int fac = factorial(a);
    printf("fac = %d", fac);
    return 0;
}

 

标签:return,递归,int,factorial,printf,main
From: https://www.cnblogs.com/LiQ0112/p/17168551.html

相关文章