递归的标准模式(有可对函数的入口进行测试的基本情况)

if (条件)

return (不需要递归的简单答案);

else

return (递归调用同一函数);

如求阶乘的递归函数:

unsigned long factorial(unsigned long number)

if(number=1; i–)

result *= i;

return result;

对于大多数常用的递归都有简单、等价的迭代程序。究竟使用哪一种,凭你的经验选择。

迭代程序复杂,但效率高。

递归程序逻辑清晰,但往往效率较低(空间复杂度高)。

3 迭代和递归对比

迭代和递归都是基于控制语句的:迭代使用循环结构,递归使用选择结构。

迭代和递归都涉及到循环,迭代显式地使用循环结构,递归通过重复的函数调用实现循环。

迭代和递归均包括终止条件测试,迭代在循环继续条件失败时终止,递归在达到基本情况时终止。计数器控制的循环和迭代和递归都是逐步达到终止的。迭代修改计数器直到计数器的值使循环条件不满足;递归产生比原来的问题简单的版本直到达到基本情况。

递归有许多不足之处。它不断地进行函数调用,必然会增加很多开销。这样不仅消耗处理器的时间,还会消耗内存空间。每个递归调用都会创建函数的一份副本(实际上只是函数中的变量),这也会占用相当可观的内存。而迭代器通常发生在一个函数内,因此没有重复的函数调用的开销和额外的内存分配。

4 Fibonacci函数的递归和迭代实现

可以用递归解决的问题绝大部分都可以用迭代(非递归)解决。

Fibonacci函数的递归实现

int f(int n)

{if (n==0) return 0;

elseif (n==1) return 1;.

else return (f(n-1)+f(n-2));

迭代递归区别_迭代递归空间复杂度_递归和迭代

Fibonacci函数的迭代实现

int f(int n)

{ int i, fn, fn_1 = 0, fn_2 = 1;

if (n

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注