首先要理解遞歸的概念,先遞后歸
創新互聯公司長期為上1000+客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為溫江企業提供專業的成都網站制作、網站建設、外貿網站建設,溫江網站改版等技術服務。擁有10年豐富建站經驗和眾多成功案例,為您定制開發。
開始遞
get(1) n=1不成立,執行else
get(2) n=2不成立,執行else
get(3) n=3不成立,執行else
get(4) n=4不成立,執行else
get(5) n=5不成立,執行else
get(6) n=6不成立, 執行else
get(7) n=7不成立, 執行else
get(8) n=8不成立, 執行else
get(9) n=9不成立 執行else
get(10) n=10成立,返回值1
開始歸!
get(10) num=1
get(9) get(n+1)*2+2 = 1*2+2=4 //這里說下為什么不在遞的時候計算else呢?因為在遞的時候我們并不知道他們上一次的值,所以是沒辦法計算的,這里get(n+1)已經知道了上一次的值get(10)是1。
get(8) get(n+1)*2+2 = 4*2+2 =10
get(7) get(n+1)*2+2 = 10*2+2 = 22
get(6) get(n+1)*2+2 = 22*2+2 = 46
get(5) get(n+1)*2+2 = 46*2+2 = 94
get(4) get(n+1)*2+2 = 94*2+2 = 190
get(3) get(n+1)*2+2 = 190*2+2 = 382
get(2) get(n+1)*2+2 = 382*2+2 = 766
get(1) get(n+1)*2+2 = 766*2+2 = 1534
至此遞歸條件結束
答案為B:
int f(int t[],int n)定義了一個int類型的函數,s=f(a,4)是將數組a傳遞給了t[],4傳遞給了n,遇到f就調用f定義的函數,直到n=0。最后s=t[3]+t[2]+t[1]+t[0],因為將a傳遞給了t[],所以s=4+3+2+1=10.
遞歸函數有三點要求:
1,遞歸的終止點,即遞歸函數的出口
2,不斷的遞歸調用自身
3,遞歸函數主體內容,即遞歸函數需要做的事情
ps:3一般可以放在2的前面或者后面,一般1放最前面。另外,2和3可以根據不同的需要合并,比如,有時候遞歸函數的主體就是返回調用下層函數所得到的結果。
具體例子如下:
void?fun(int?n)
{
if(n=0)?return;???//1?這是遞歸的終點,即出口
fun(n-1);????????//2、遞歸函數自身的調用
coutnendl;?????//3?遞歸函數的主體內容
}
2,3合并的情況
int?fun(int?n)
{
if(n=0)?return?0;
return?fun(n-1)+fun(n-2);??//2?3合并
}
#include?stdio.h
#include?math.h
double?mysqrt(double?a,?double?x0)
{
if?(a0)return?-1;
double?x1?=?1.0?/?2?*?(x0?+?a?/?x0);
if?(fabs(x1?-?x0)??1e-5)return?x1;
return?mysqrt(a,?x1);
}
int?main()
{
double?a,?x0?=?1.0;
printf("Enter?a:");
scanf("%lf",?a);
printf("The?sqrt?of?%lf=%lf\n",?a,?mysqrt(a,?x0));
return?0;
}
網站名稱:c語言遞歸函數ppt C語言遞歸函數求1+2++n
轉載注明:http://vcdvsql.cn/article12/ddcdigc.html
成都網站建設公司_創新互聯,為您提供虛擬主機、品牌網站設計、網站排名、用戶體驗、定制網站、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯