1函数的递归
1.1什么是递归
目录
1.什么是递归
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题递归的主要思考方式在于:把大事化小过程所需要的多次重复计算,大大地减少了程序的代码量。
递归的主要思考方式在于:把大事化小
2 递归的两个必要条件
存在限制条件,当满足这个限制条件的时候,递归便不再继续。
每次递归调用之后越来越接近这个限制条件。
3.递归练习
练习1
递归方式实现打印一个整数的每一位
如果我们需要打印一个数的每一位
首先我们需要将数拆分开来
例如:
1234%10 | 4 |
1234\10 | 123 |
123%10 | 3 |
123\10 | 12 |
12%10 | 2 |
12\10 | 1 |
1%10 | 1 |
1\10 | 0 |
此时我们需要将他反复过来打印
#include<stdio.h>
int shuchang(int x)
{
if (x > 9)
{
shuchang(x / 10);
}
printf("%d", x % 10);
}
int main()
{
int x = 0;
scanf("%d", &x);
shuchang(x);
return 0;
}
为什么要限制n>9
如果没有这个条件函数会一直调用自己
栈会溢出
作用是为了限制递归,让它达到目的后停止
他的运行就是函数自己调用自己
这是运行结果
练习2
编写一个函数实现n的k次方,使用递归实现。
#include<stdio.h>
int my_pow(int n,int k)
{
if (k == 1)
{
return n;
}
else
return n * my_pow(n, k - 1);
}
int main()
{
int n = 0;
int k = 0;
scanf("%d", &n);
scanf("%d", &k);
int ret= my_pow(n,k);
printf("%d", ret);
return 0;
}