欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

這個C語言函數返回值怎么跟想不一樣?

查看數: 2325 | 評論數: 10 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2020-3-8 10:14

正文摘要:

#include "REG52.H"fun(int n); int m; void main() { m=fun(4); } fun(int n) { int t; if((n==0)||(n==1))t=3; else t=n*fun(n-1); return t; } 這個變量m=3

回復

ID:496117 發表于 2020-3-9 11:27
你需要學習一下c語言基礎,遞歸都沒了解啊
ID:496117 發表于 2020-3-9 11:27
stephanie_han 發表于 2020-3-9 05:57
我比較好奇你編譯的時候有沒有warning,畢竟從來沒有嘗試過定義函數不給返回值類型,一開始我以為如果沒有返 ...

c語言默認init,以前的程序都不嚴謹
ID:532564 發表于 2020-3-9 05:57
我比較好奇你編譯的時候有沒有warning,畢竟從來沒有嘗試過定義函數不給返回值類型,一開始我以為如果沒有返回值類型就默認為void,但是后面說有結果輸出,看來是可以這么寫的啊
ID:704232 發表于 2020-3-9 00:43
chenzhizhong 發表于 2020-3-8 19:23
上面的代碼出現死循環,把子函數放主函數后面就會死循環,放主函數前面就不會,為什么呢?

C程序是從上往下編譯的,子函數放后面的話就不知道fun()函數,你可以把子函數放主函數前面,或者在主函數里面聲明一下int fun(int n);
ID:704232 發表于 2020-3-9 00:39
  1. #include <stdio.h>

  2. int fun(int n)
  3. {
  4.     int t;
  5.     if(n==0||n==1) t=3;
  6.     else t=n*fun(n-1);
  7.     return t;
  8. }

  9. void main()
  10. {
  11.     int m;
  12.     m=fun(4);  //fun(4)=4*fun(3)=4*3*fun(2)=4*3*2*fun(1)=4*3*2*3=72,因此返回值t為72
  13.     printf("%d\n",m); //m=72
  14. }
復制代碼
ID:704014 發表于 2020-3-8 19:23
chenzhizhong 發表于 2020-3-8 16:33
上面代碼怎樣改過來呢,編譯一直出錯。。

上面的代碼出現死循環,把子函數放主函數后面就會死循環,放主函數前面就不會,為什么呢?
ID:704014 發表于 2020-3-8 16:33
tyrl800 發表于 2020-3-8 14:16
函數遞歸調用,m=72;

上面代碼怎樣改過來呢,編譯一直出錯。。
ID:275826 發表于 2020-3-8 14:16
函數遞歸調用,m=72;
ID:704014 發表于 2020-3-8 13:35
哦,自己發現問題了,是函數再入問題
ID:704014 發表于 2020-3-8 10:17
為什么m=3呢?調試t變量看不見

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表