【C语言】初步了解递归及递归与迭代的相互转换

本文详细介绍了递归的概念,通过阶乘和斐波那契数列的示例阐述递归工作原理,同时探讨了递归与迭代之间的转换。作者通过实例演示了如何在C语言中实现这些概念并强调了结束条件的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

        1.什么是递归?
        2.加深理解递归
        3.递归例题练习
        4.递归与迭代的相互转换

1.什么是递归?

递归就是c语言里面的函数自己调用自己的过程就简称为递归

例子     n的阶乘

#include<stdio.h>
int fact(int n)
{
	if (n > 0)
		return n * fact(n - 1);
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int m = fact(n);
	printf("%d", m);
	return 0;
}

这里我们就是用函数fact自己调用自己这个过程就成为递归但是递归必须有自己的结束条件在这里n>0就是这里的结束条件要不然会一直递归


2.加深理解递归

根据上面那个例子求n的阶乘对于n的基本要求是这样的

所以递归分为两个阶段递推和回归


3.递归例题练习

题目

顺序打印一个数的每一位数

输入

1234

输出

1 2 3 4

#include<stdio.h>
void fact(int n)
{
	if (n >= 10)
	{
		fact(n / 10);
	}
	printf("%d ", n % 10);
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	fact(n);
	return 0;
}

可能有人不理解为什么直接就写一个printf就可以因为为这个函数的话if语句里面是一个递归调用自己首先进入函数里面1234进入变成了123上面还没有结束继续在if里面只有等n变成1的时候才会不符合n>=10的条件跳过if进入下面开始输出由于最开始是1所以打印的是1 2 3 4

例题  斐波那契数列

看到这个很容易就会想到递归写这个题目

#include<stdio.h>
int fib(int n)
{
	if (n > 2)
	{
		return fib(n - 1) + fib(n - 2);
	}
	else
		return 1;
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int m = fib(n);
	printf("%d", m);
	return 0;
}

4.递归与迭代的相互转换

首先迭代就是像累乘累加一样的逐个计算的过程称为迭代

例如上面那个斐波那契数列如何用给递归转换为迭代呢下面为大家讲解一下

这里让里面的数不断进行交换c=a+b;a=b;b=c;这样交换就实现用迭代写斐波那契数列

#include<stdio.h>
int fib(int n)
{
	int a = 1, b = 1, c = 1;
	while (n >= 3)
	{
		c = a + b;
		a = b;
		b = c;
		n--;
	}
	return c;
	
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int m = fib(n);
	printf("%d", m);
	return 0;
}

这就是我学的知识希望可以帮到大家

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值