n的階乘就是1,老師這樣寫沒錯(cuò),一開始如果輸入0就會(huì)用到這個(gè)判斷,返回1,其他情況下是用不到這個(gè)判斷的
2019-08-25
這一節(jié)講的一般,三種定義方式應(yīng)該給個(gè)具體的示例,而不是簡(jiǎn)單的說說。還有定義和聲明之前有什么區(qū)別,說的不夠清晰明了
2019-04-25
@江戶川柯南_qq 不是視頻錯(cuò)了,是你錯(cuò)了,我給你捋一下,捋之前改個(gè)名,p1, p2 太亂了,p1 改叫 pCurrOne,p2 改叫 pPrevOne。
最后一次是判斷 price,假設(shè)最后一次輸入的 price 是 0, 那么在最后一次的下一次循環(huán)判斷就不會(huì)通過,那么最后一次也就是 pCurrOne 就直接作廢(視頻這里忘了 free() ),而 pPrevOne 將作為真正的最后一個(gè),所以是 pPrevOne -> next = NULL;
最后一次是判斷 price,假設(shè)最后一次輸入的 price 是 0, 那么在最后一次的下一次循環(huán)判斷就不會(huì)通過,那么最后一次也就是 pCurrOne 就直接作廢(視頻這里忘了 free() ),而 pPrevOne 將作為真正的最后一個(gè),所以是 pPrevOne -> next = NULL;
head[害的]
next[耐ks]
next[耐ks]
打印鏈表用遞歸你是認(rèn)真的嗎?==
沒有free掉內(nèi)存,差評(píng)
前面有很多人說最后一個(gè)節(jié)點(diǎn)是p1,其實(shí)并不是,首先p1,p2并不是節(jié)點(diǎn),只是一個(gè)臨時(shí)變量,就像冒泡排序中的tmp,節(jié)點(diǎn)是malloc分配的內(nèi)存塊。其次最后一個(gè)節(jié)點(diǎn)是p2指向的內(nèi)存塊,因?yàn)閜1是在price不等于0的情況下才追加到p2指向的內(nèi)存塊的next指針中,但是由于判斷=0,所以沒有追加!?。∽⒁鈖2并不是節(jié)點(diǎn),p1也不是節(jié)點(diǎn),他們都是指針,都僅僅指向地址,由于最后一個(gè)p是指向(0,0),這個(gè)內(nèi)存塊并沒有追加到上一個(gè)內(nèi)存塊的next指針中,而上一個(gè)內(nèi)存塊的位置在哪呢?最后一次執(zhí)行循環(huán)的時(shí)候,p1把地址給了p2,所以最后一個(gè)地址是p2指向的內(nèi)存塊。
n==0,應(yīng)該作為一個(gè)錯(cuò)誤處理或者單獨(dú)分開返回0才對(duì)吧,一個(gè)大于0的整數(shù),在遞歸的過程中是不會(huì)有參數(shù)為0的情況出現(xiàn)的
2018-11-30