本文目錄一覽:
有關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語言遞推與遞歸的區別
遞推:知道第一個,推出下一個,直到達到目的。
遞歸:要知道第一個,需要先知道下一個,直到一個已知的,再反回來,得到上一個,直到第一個。
原創文章,作者:XQGN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/137367.html