快速认识并学会递归

1函数的递归

1.1什么是递归

目录

1函数的递归

1.1什么是递归

1.2递归的两个条件

1.2.1递归练习


1.什么是递归

程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题递归的主要思考方式在于:把大事化小过程所需要的多次重复计算,大大地减少了程序的代码量。

递归的主要思考方式在于:把大事化小

2 递归的两个必要条件

存在限制条件,当满足这个限制条件的时候,递归便不再继续。

每次递归调用之后越来越接近这个限制条件。

3.递归练习

练习1

递归方式实现打印一个整数的每一位

如果我们需要打印一个数的每一位

首先我们需要将数拆分开来

例如:

1234%104
1234\10123
123%103
123\1012
12%102
12\101
1%101
1\100

此时我们需要将他反复过来打印

#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;
}

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值