重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
沒有遞歸,你把自己想的太高端了
專注于為中小企業提供成都網站建設、網站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業文登免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了成百上千家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。
先執行fun(d)也就是fun(1)
d=5,d=d+p=5+1=6
打印了6
然后執行fun(a+fun(d))=fun(3+6)=fun(9)
d=6,d=d+p=6+9=15
打印了15
最后打印fun(a+fun(d))
等于15
我給你舉個簡單的例子你就明白了,你可以假設n=3
然后代入這個函數,a(3)=a(2)+5;而a(2)=a(1)+5;a(1)=1
所以最后就是a(3)=1+5+5=11…
同理你可以算出a(10)=1+5*9=46
滿意請采納
遞歸函數有三點要求:
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合并
}