1、递归:程序调用自身的编程技巧
递归的两个必要条件:存在限制条件,当满足这个限制条件的时候,递归便不在继续
每次递归调用之后越来越接近这个限制条件
案例:接受一个整形,按照顺序打印出来,比如 1234 ,输出1,2,3,4
#include<stdio.h>
//接受一个整形,按照顺序打印出来,比如 1234 ,输出1,2,3,4
void print(int n)
{
if(n>9)
{
print(n/10);
}
printf("%d",n%10);
}
int main(){
int num ;
scanf("%d",&num);
//递归
print(num);
return 0;
}
2、案例求字符串的长度
#include<stdio.h>
//非递归求字符串长度
int my_strlen(char* str)
{
int n = 0;
while(*str != '\0')
{
n++;
str++;
}
return n;
}
//递归求字符串长度
int my_strlen1(char* str)
{
if(*str != '\0')
{
return 1+my_strlen1(str+1);
}
else
return 0;
}
//my_strlen(char str[]);数组传过去,是数组首元素的地址
int main(){
char arr[] = "bite";
int len = my_strlen(arr);
printf("len = %d\n",len);
int len1 = my_strlen1(arr);
printf("len1 = %d\n",len1);
return 0;
}
3、递归与迭代
案例:求n的阶乘
#include<stdio.h>
//求n的阶乘
int facl(int n)
{
if(n <= 1)
{
return 1;
}
else
return n*facl(n-1);
}
int main(){
int n = 0;
printf("请输入n:");
scanf("%d",&n);
int num = facl(n);
printf("%d的阶乘为:%d",n,num);
return 0;
}