猿问

怎么判断递归函数里的sum=(lzhzuibang(l-1))+2里的l-1什么时候是加号什么时候是减号

#include <stdio.h>

int lzhzuibang(int l)

{

int sum;

if(l==1)

{

return 10;

}

else

{

sum = (lzhzuibang(l-1))+2;

printf("第%d个人%d岁\n",l,sum);

return sum;

}

}

int main()

{

int y = lzhzuibang(5);

printf("第五个人的年龄是%d岁\n",y);

getchar();

}

还是不太懂递归函数大神帮忙解释一下



闷a
浏览 1603回答 1
1回答

Atlas_Wu

递归就是函数自己调用自己。可以把递归看成是一个盒子,先放进去的数据在下面,要后取出来的。比如你这个程序中 l 的值为5, 求lzhzuibang(5)。lzhzuibang(5)=lzhzuibang(4)+2lzhzuibang(4)=lzhzuibang(3)+2lzhzuibang(3)=lzhzuibang(2)+2lzhzuibang(2)=lzhuzuibang(1)+2lzhzuibang(1)=10,lzhzuibang(1)是最后放进去的,所以最先取出来,并且值返回都上一步递归,这样就依次算出上面的值,最终得到lzhuzuibang(5)的值。要注意的是,在递归结束之前,也就是lzhzuibang(5)求出之前,lzhzuibang(1)到lzhzuibang(4)都是作为临时变量存放于内存当中等待递归的返回值,因此会占用一定的内存空间。如果递归的次数很大,比如你把5改成50000或更大,那么就会出现内存的溢出。你的问题“sum=(lzhzuibang(l-1))+2里的l-1什么时候是加号什么时候是减号”,我不是很明白什么意思?

慕瓜9220888

RQVJSUAATSCUPZMVOEFZUIAWPISGXFRCCIEOAXCKIYRHXCODRDSFBBOQCAZILLHGTFDSIXHUGXSWBQAJGHOJAPPBBOLCQFNGQGWLCUZRZPYECGYTBAJDIZMRDRKQTMEDPESCROKWXIQPEOERGRWANGWFPQHWUDZIFAGOQMSBIWTKYKMCCIWTMNPLGAGKHRBNSYLVCPTUAWLISPJWRNYUXHOMXYUQLFVPQDRNJEOEYCZAWYUEOLJHOUGVZWGKOFBXLVOFJOMYYATKNETRGLREMZDIQIEPQKFGDOKGFSMHEDFHMLSFRSHIHBYCZAXZQSOFPIFZMXLDMWZMQBCINTQNKEUOEJFICCHYTSRCFFEQDFBNJTHKEZWOTISRKUBCHFHHGJSCJIWLODXZTBQEWWFFYAHZEGVBLTNODVTPSCOLZYNLRQIYIWECBRAGCVJYWTWCBOOSHPBXLIYLQLDHNPBVZEWBHAAMGBVKPXQOHUUENVZPNJJWXWCHEKNGIGLLZPSYODYGLBRAAQIGKZZZFYOMRWLXDKBULWSUGDAARWKTRWMBLRMNCRFSRLUNEWBAPSYFCROWBUNNJNKCXEUNWVHPXIUBRXUSGIWXGCPFBKPOGFFOOKVUQPCFVOFNCKILXIFFGCEANTNKWKSDVNZZIQVQSRHERLKRZYWGRHQUOJIWGAQTVWBALVLBXVQOJJFPRUCGBJOHQJZNITVJBXTZDUTRMVHKUQBQETMUJTSNYGPIUTQCDYQVUNTJALQFDEXXKESKJHXXQGQDHQEORDWRPAFNGYEOBSUZENJMPRODSAWPISEIKFXXMMJQOCVZUAACAODLQGPOBTUJLZFYROWHPUCVRUUZDZXVFHFPHPPUFVEOEQOWFUNGBRPGVTIUHXAAHGUCRQAQLMRTBDDWCYEMUJSBBOCMUTLKUDZGRGOJMIBOPKIUFOYOXRBKAVYOHQBWKZHTTFPABZOSVBCCFGOTMZOIROZOTUQYLUXTSNLVXUAIPOGHHVFBAYGYNWZCSJARANMMLYWHCBCCYHKEVDSGYKAUMNLQIYOHQYPXKSKTMFHZRFEKDMWQWODHRQQMZAIDLYHXEWUJLBBQQGQYNFXWCVYDUSEWZORUIFUWHHXQQQAFFOUTMWKODIGGJFBQKVESLRWWHIDSKQZCMUVMRQFVEBWXCAYPYYUIWINFLHTDVGFDIVLUUEMKWSISBLRMEMYZCVODUPRMZIYBJDPDEWWFZXUZBGPCBBGBGCKTDKEVMKRQSIYVBCIXMQZGCYTIONUDUUYCOGSUOVBDBSYNKHUVBSONYRIZZSNXXSWZCNUIYXJMZNHVWODJMGAGNFDMVFYPDVCHTBKXSYBZHFNTJUUKRZYQMPICOFUZGCFVUBCAJBQLVEVPOTYKHUQGOWHNGZIPNNMUCNNGWLVEFNQMMRIMKCBAWQWHLJLATJCYNBQWEHBUHRMXZYHAJDKRZINZOBVWNWRPPMICXNJBZMCBYELHYNXQZMSDZOAQSIPBSKJEXTMGEZZUMZSSOVPRPXNVUHRLKMKTQCCDBUZPMFJGXFHPEHWZZEVTSDXPVSARMUMUJWWSJIWYIENKZGWSQJPSECTLJVRHAGCCJYZZZLFHBAYAGCCF
随时随地看视频慕课网APP
我要回答