亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

求解問題呀

為什么result=factorial(n-1)*n ?就代表階乘呢?

是不是factorial就代表階乘函數

factorial(n-1)*n 相當于!(n-1)*n


正在回答

2 回答

這樣說吧,就拿例題為例,求5!,在自定義函數中他有一次調用自己,那么就要從函數頭開始運行。首先factorial(n-1)*n表示的就是4*5,接著調用自己factorial(n-1),那么factorial(n-1)*n就表示3*4*5,一次類推,2*3*4*5,1*2*3*4*5,0*1*2*3*4*5,-1*0*1*2*3*4*5。。。。。在自定義函數中我們知道當n<0時,return 0,那么n=0或1時,result=1,那么就不存在 0*1*2*3*4*5,-1*0*1*2*3*4*5。。。。。后面陸續的應該時1*1*2*3*4*5,1*1*1*2*3*4*5。。。。你想,這樣是不是就可以簡單的看成1*2*3*4*5,不就表示5的階乘么。望采納

1 回復 有任何疑惑可以回復我~
#1

慕絲6464244 提問者

非常感謝!
2018-06-21 回復 有任何疑惑可以回復我~
#2

慕萊塢2287185

可是if else又不是循環結構,為什么會反復調用啊,不應該在5*4的時候就return了么,為什么會繼續*3*2*1???
2018-07-29 回復 有任何疑惑可以回復我~
#3

天然的純指揮 回復 慕萊塢2287185

之所以會循環,是因為result=factorial(n-1)*n;中,結構是:把factorial(n-1)這個函數的值*n,得到的結果賦值給result,調用了函數factorial(n-1),而收到調用指令后,就會從頭開始執行函數factorial(n-1),下一次會執行調用函數factorial(n-2),以此類推,直到當n=1時,進入else if(n==0 || n==1)的執行代碼塊結束跳出循環,然后執行return result;把值返回給自定義函數
2018-08-19 回復 有任何疑惑可以回復我~
#4

天然的純指揮 回復 慕萊塢2287185

關于如何跳出循環的問題解釋如下: else if(n==0 || n==1)語句中result=1;不是最后一步執行,而是在階乘中最后被調用 result=factorial(n-1)*n;當到這一步時,先調用函數factorial(n-1)的值,然后調用factorial(n-2)的值 一直到最后調用到result=1(這里的調用當然會使result變為1,但后面還有最后一步result的運算),將1這個值拿來進行運算,循環結構中最后執行的一步是:result=factorial(n-1)*n;
2018-08-19 回復 有任何疑惑可以回復我~
#5

天然的純指揮 回復 慕萊塢2287185

假設n=5,那么最后執行的一步就是result=1*2*3*4*5;執行后跳出if,執行return result;
2018-08-19 回復 有任何疑惑可以回復我~
#6

天然的純指揮 回復 慕萊塢2287185

不好意思,“直到當n=1時,進入else if(n==0 || n==1)的執行代碼塊結束跳出循環”這句話錯了,正確解釋在上面回復啦
2018-08-19 回復 有任何疑惑可以回復我~
查看3條回復

請教一下

那程序 result 會不會返回值的時候,不會返回成1嗎?result之前的值不會被覆蓋?

0 回復 有任何疑惑可以回復我~
#1

天然的純指揮

個人看法:題目中的教學圖片else if(n==0 || n==1)的代碼塊給錯了,應該是return 1;表示結束,而不是result=1; 參考問答和評論里給的答案代碼,都是寫的return 1;來結束循環
2018-08-19 回復 有任何疑惑可以回復我~
#2

天然的純指揮

前一條評論可能錯誤了,你的問題具體原因我也不太清楚,抱歉打擾了
2018-08-19 回復 有任何疑惑可以回復我~
#3

天然的純指揮

仔細重新看了一遍,是這樣的: else if(n==0 || n==1)語句中result=1;不是最后一步執行,而是在階乘中最后被調用 result=factorial(n-1)*n;當到這一步時,先調用函數factorial(n-1)的值,然后調用factorial(n-2)的值 一直到最后調用到result=1(這里的調用當然會使result變為1,但后面還有最后一步result的運算),將1這個值拿來進行運算,循環結構中最后執行的一步是:result=factorial(n-1)*n;
2018-08-19 回復 有任何疑惑可以回復我~
#4

天然的純指揮

假設n=5,那么最后執行的一步就是result=1*2*3*4*5;執行后跳出if,執行return result;
2018-08-19 回復 有任何疑惑可以回復我~
查看1條回復

舉報

0/150
提交
取消
C語言入門
  • 參與學習       926905    人
  • 解答問題       21532    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

求解問題呀

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號