递归的两个必要条件:
- 存在限制条件,当满足这个限制条件的时候,递归不再进行
- 每次递归调用完之后越来越接近这个限制条件
练习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