您的位置:

c语言递归递推,c语言递推与递归

本文目录一览:

有关C语言用递推方法的问题

递推算法是一种用若干步可重复运算来描述复杂问题的方法.递推是序列计算机中的一种常用算法。它是按照一定的规律来计算序列中的每个项,通常是通过计算机前面的一些项来得出序列中的指定象的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复,该算法利用了计算机速度快和不知疲倦的机器特点。

【例】

植树节那天,有五位同学参加了植树活动,他们完成植树的棵树都不相同。问第一位同学植了多少棵时,他指着旁边的第二位同学说比他多植了两棵;追问第二位同学,他又说比第三位同学多植了两棵;... 如此,都说比另一位同学多植两棵。最后问到第五位同学时,他说自己植了10棵。到底第一位同学植了多少棵树?

分析:设第一位同学植树的棵树为a1,欲求a1,需从第五位同学植树的棵数a5入手,根据“多两棵”这个规律,按照一定顺序逐步进行推算:

(1) a5=10;

(2) a4=a5+2=12;

(3) a3=a4+2=14;

(4) a2=a3+2=16;

(5) a1=a2+2=18;

使用这种方法,

第一步先例举一些关系式,找到规律,或者说找到通项公式

第二步找到结束程序的条件值

找到后直接用

if(结束条件)

return 结束时的值

else 通项公式

return 最后的返回值

把这个直接填到被调函数里面就可以了

C语言中的递归是什么意思

递归就是递推公式的模拟

函数直接间接的调用自己,一直到可以直接得到结果为止。

必须有一个可以不用递归,直接完成的情况。并且总是能够达到。

不然就是害自己了,你的程序永不结束,直到堆栈空间用完,程序或系统崩溃,莫名奇妙的退出。

真正的程序里,不会出现 阶乘运算、级数运算、幂指数运算等方面使用递归的代码。

这些完全可以使用迭代,而且高效。

递归用在树,图这样的数据结构上以及一些排序算法上,非常自然,而非递归算法却比较难懂,而且还不好实现.

你这个怎么这么象二叉树的先根遍历。

C语言用递推和递归两种算法完成斐波那契数列的计算,给一下代码

//递归法

int fibo1(int n)

{

if( n == 1 || n == 2) return 1;

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

}

//递推法

int fibo2(int n)

{

int f0=1,f1=1,f;

if (n2)

return 1;

for(int i=2;in-1;i++)

{

f=f0+f1;

f0=f1;

f1=f;

}

return f;

}

区别:递推是直接使用已知的条件去推出未知的条件;递归则是将大问题逐渐转化为若干个相同的子问题,直到得到已知的最小子问题,再回溯依次得到父问题的答案。是由未知到已知,再从已知到未知。对于复杂的问题,递归把问题简单化,读起来易懂。

C语言递推与递归的区别

递推:知道第一个,推出下一个,直到达到目的。

递归:要知道第一个,需要先知道下一个,直到一个已知的,再反回来,得到上一个,直到第一个。