C语言中的函数递归
函数递归- C语言中的函数递归
- 什么是递归
- 递归必须注意的事
- 递归练习题
- 1接受一个整型(无符号),按顺序打印每一位
- 2用递归求n的k次方
- 3编写函数不用许创建临时变量,求字符长度
- 青蛙跳台阶
- 递归缺点
什么是递归
程序调用自生的编程技巧称作递归。所谓递归就必然存在着递出与回归,递归的全过程其实是将一个问题分成若干个解法相同的问题,将初始的数据一直往后传送,当到达一个临届值后开始回归,从原路返回实现问题的解决。 递归策略使得只需要少量的程序就可以描述出解题中多次重复的计算,大大减少了代码的长度。 递归的精髓就在于大事化小。
递归必须注意的事
1存在限制条件,当满足这个条件时,递归便不在继续,(也就是说要有一个临界值) 2每次递归后都会接近临界值,且递归层次不要太深。
递归练习题
1接受一个整型(无符号),按顺序打印每一位
eg:输入1234,打印1 2 3 4; 首先读题其实就是将不同位拆开,且先将1打出来。那么当这个数只剩最高位也就是临界值, 所以a(输入的数)/10==0;也就是临界值的判断。然后每回打印a就行了
代码语言:javascript复制#include <stdio.h>
int print(unsigned int n)
{
if (n > 9)
{
print(n/10);
}
n = n % 10;
printf("%d ", n);
return 0;
}
int main()
{
unsigned int a = 0;
scanf("%u", &a);
print(a);
return 0;
}
2用递归求n的k次方
代码语言:javascript复制#include <stdio.h>
int index(int n, int k)
{
int i = 1;
if (i < k)
{
return n * index(n, k - 1);
}
else
{
return n;
}
}
int main()
{
int n = 2;
int k = 5;
int num= index(n, k);
printf("%d", num);
return 0;
}
这个比较简单就不做图解了;
3编写函数不用许创建临时变量,求字符长度
引入一个知识点,当你函数调用传送的是一个数组时,数组名其实传递的是数组首元素的地址。还有就是当使用char arr[] = “bit”;这种方式创建数组时其实字符串是“bit ”
代码语言:javascript复制#include <string.h>
#include <stdio.h>
int my_strlen1(char* str)
{
int count = 0;
while (*str != '