C++数据结构之递归阶乘(六)

递归的是神,迭代(循环)的是人!
引用一下博客:什么是递归?先了解什么是递归.
————那么什么是递归呢? 要理解递归,就得先了解什么是递归,实际上这句话就是一个递归。这么说可能不好理解,接下来我举个简单的例子来解释这段话的意义。

假设我们现在都不知道什么是递归,我们自然想到打开浏览器:输入到谷歌的网页,点击搜索递归,然后在为维基百科中了解到了递归的基本定义。在了解到了递归实际上是和栈有关的时候,你又蒙圈了,什么是栈呢?数据结构没学清楚,此时的你只能又打开谷歌,搜索什么是栈。接下来你依次了解了内存/操作系统。在你基本了解好知识之后,你通过操作系统了解了内存,通过内存了解了栈,通过栈了解了什么是递归这下你恍然大悟!原来这就是递归啊!

这下应该有点明白了吧,这个过程其实就是递归的过程,如果不了解递归,那就先了解什么是递归,可能你会说这是个循环并不是递归,我们前面说到,递归是需要终止条件的,那么你明白递归是什么其实就是终止条件。整个过程,搜索引擎充当递归函数(只是形象的假设)。在你去依次查找递归/栈/内存/操作系统的过程为前行阶段,在你都了解完之后,反回去了解含义的过程为退回阶段。————

在这里插入图片描述
也就是递归有去有回,循环有去无回!

C++代码如下

#include <iostream>

using namespace std;

void doA()
{
	cout << "Hello" << endl;
	doA();
}

void 老奶奶讲故事()
{
	cout << "从前有座山,山里有座庙,庙里有一个老和尚,老和尚在给小和尚讲故事: " << endl;	
	老奶奶讲故事();
}

//**递归**
// n! = n x (n-1)!
long 阶乘(int n)
{
	if(n==0)
		return 1;
	else
		return n * 阶乘(n-1);
}

//**迭代**
long 阶乘2(int n) 
{
	long 结果 = 1;
	for(int i=n; i>0; i--)
		结果 = 结果 * i;
	return 结果;
}

int main()
{
	//doA();
	//老奶奶讲故事();
	//cout << 阶乘(5) << endl;
	//cout << 阶乘2(5) << endl;
	for(int num=0; num < 10; num++)
	{
		cout << "递归: " << num << "! = " << 阶乘(num) << endl;
		cout << "迭代: " << num << "! = " << 阶乘2(num) << endl;
	}

	return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值