1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標(biāo)題: 這個(gè)C語(yǔ)言函數(shù)返回值怎么跟想不一樣? [打印本頁(yè)]

作者: chenzhizhong    時(shí)間: 2020-3-8 10:14
標(biāo)題: 這個(gè)C語(yǔ)言函數(shù)返回值怎么跟想不一樣?
#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; }
這個(gè)變量m=3



作者: chenzhizhong    時(shí)間: 2020-3-8 10:17
為什么m=3呢?調(diào)試t變量看不見
作者: chenzhizhong    時(shí)間: 2020-3-8 13:35
哦,自己發(fā)現(xiàn)問題了,是函數(shù)再入問題
作者: tyrl800    時(shí)間: 2020-3-8 14:16
函數(shù)遞歸調(diào)用,m=72;
作者: chenzhizhong    時(shí)間: 2020-3-8 16:33
tyrl800 發(fā)表于 2020-3-8 14:16
函數(shù)遞歸調(diào)用,m=72;

上面代碼怎樣改過來呢,編譯一直出錯(cuò)。。
作者: chenzhizhong    時(shí)間: 2020-3-8 19:23
chenzhizhong 發(fā)表于 2020-3-8 16:33
上面代碼怎樣改過來呢,編譯一直出錯(cuò)。。

上面的代碼出現(xiàn)死循環(huán),把子函數(shù)放主函數(shù)后面就會(huì)死循環(huán),放主函數(shù)前面就不會(huì),為什么呢?
作者: Sube    時(shí)間: 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. }
復(fù)制代碼

作者: Sube    時(shí)間: 2020-3-9 00:43
chenzhizhong 發(fā)表于 2020-3-8 19:23
上面的代碼出現(xiàn)死循環(huán),把子函數(shù)放主函數(shù)后面就會(huì)死循環(huán),放主函數(shù)前面就不會(huì),為什么呢?

C程序是從上往下編譯的,子函數(shù)放后面的話就不知道fun()函數(shù),你可以把子函數(shù)放主函數(shù)前面,或者在主函數(shù)里面聲明一下int fun(int n);
作者: stephanie_han    時(shí)間: 2020-3-9 05:57
我比較好奇你編譯的時(shí)候有沒有warning,畢竟從來沒有嘗試過定義函數(shù)不給返回值類型,一開始我以為如果沒有返回值類型就默認(rèn)為void,但是后面說有結(jié)果輸出,看來是可以這么寫的啊
作者: huangzongwu    時(shí)間: 2020-3-9 11:27
stephanie_han 發(fā)表于 2020-3-9 05:57
我比較好奇你編譯的時(shí)候有沒有warning,畢竟從來沒有嘗試過定義函數(shù)不給返回值類型,一開始我以為如果沒有返 ...

c語(yǔ)言默認(rèn)init,以前的程序都不嚴(yán)謹(jǐn)
作者: huangzongwu    時(shí)間: 2020-3-9 11:27
你需要學(xué)習(xí)一下c語(yǔ)言基礎(chǔ),遞歸都沒了解啊




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1