1:递归:函数调用自身的编程技巧称为递归;
#include <stdio.h>
int main()
{
printf("hehe\n");
main();
return 0;
}
该代码运行一段时间后会自动停止、栈区满会发出“stack overflow”信号;
2:www.stackoverflow.com 程序员的知乎;
3:递归的两个必要条件:(1):存在限制条件,当满足这个限制条件时,递归不再继续;
(2):每次递归调用之后越来越接近这个条件;
4:顺序打印输入的数字:
#include <stdio.h>
void print(int x)
{
if (x > 9)
{
print(x / 10);
}
printf("%d ", x%10);
}
int main()
{
unsigned int a = 0;
scanf("%d", &a);
print(a);
return 0;
}
5:数组传参,传过去的不是整个数组,而是数组中第一个元素的地址;
6:计算输入字符串的长度:
#include <stdio.h>
int my_strlen(char*str)
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
int main()
{
char arr[] = "";
scanf("%s", &arr);
int len = my_strlen(arr);
printf("%d", len);
return 0;
}
利用递归完成相同的功能:
#include <stdio.h>
int my_strlen(char*str)
{
if (*str != '\0')
return 1 + my_strlen(str + 1);
else
return 0;
}
int main()
{
char arr[] = "";
scanf("%s", &arr);
int len = my_strlen(arr);
printf("%d", len);
return 0;
}