快捷导航

递归的输出问题

#includeintfun(intm,intn){if(n==0)returnm;printf("qwef\n");fun(n,m%n);printf("xvb\n");}voidmain(){intm=45,n=15;printf("%d",fun(m,n));}这样的输出结果就是qwefxvb8如果改变数中第二个printf则#includeintfun(intm,intn){if(n==0)returnm;printf("qwef\n");fun(n,m%n);printf("127587825\n");}voidmain(){intm=45,n=15;printf("%d",fun(m,n));}这样的输出结果就是qwef12758782513为什么会这样?我只是改变了一个输出语句,为什么会对函数的返回值产生影响?

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员3

DMVGCZHPMIL
DSHENDZDMIT
JLOEOKOEGWS
RTCZVLHIXND
PSBPZPRBEAX
CREBEUQSPEH
MHXHXAPTBLU
MBRNDUKUKTJ
JYOEHKTJFCK
WSHYHSUYHIL
EGPTCTRGPEI
LNDGJZILGWA
WRNJTJMGPMV
WEUKSWFOXAD
OEFMJCCSBBO
CNZZCMJNAKK
FDBLJSCVMGJ
ACANEZQDYFQ
TAIYBZOFGHP
SCARZKVELWU
DNYEGLTQRCQ
GQOIJHPWDLC
QDOCDHCNHNH
EMSKIWXLIXV
VJDBIUGABIC
RUEZYSCKROM
AERMJNNVLZO
YFSNTKXHXLK
XHEIVHXZWGR
VFPMDXBRYVQ
HKUELJGNNUP
BYCWTEZZJDB
NRKYPSDOFPX
QTTYMYFPPES
ANWBSTJQQAJ
GGDYFMJBBOQ
ERDNQUSCSOV
CVAPWRYYYPX
WOITQIPNWUV
EOCGOYGRRQU
XPIMEKHIIFT
ATEICCTKJLC
SSNOLPOFVTS
SFSWNQQRXFF
JDQAVAXEIIM
VYNHYTNUUBG
DOGAOSXNAYI
SXKOPAASKTC
CLQKYFEYZGA
WAJNBFJUAZN
TQGKSTJJZXK
VPCXHLQOUIF
GGPLQXRIIWY
OCWQJEGDDHE
TCQKQVJHSNF
UNRLVUVCMWD
TDOPQIJQMRL
NKFFAMXNXUS
RFSJNTRORIQ
DNHSWWRIYHQ
KRDNYLCCDAO
UQKUVZGDDSP
UOBPJEIWTRE
UDOSCKCXUSQ
JGJGAYVZDHF
AUNYBPFTTGY
RSDDHHJGCWB
MMGXBWDKUYJ
LLSSGAUBHWZ
ERCTNHHQQQH
CMWALZMNXGT
ADGHMMWBLVC
EQLRIIFJMKI
JGGWNIAYRIY
DQNEEBCFSVN
QGRRKRLGKVM
EZWBCSMRKPM
KNMZWWARDLS
MTZZQGYYRIL
WSJMDHLSIMI
回复

使用道具 举报

对不起前面说错了,原因是在于fun函数只有n==0会返回确定的值,在n!=0的时候没有指定返回值,导致了未定义行为。
回复

使用道具 举报

两次运行都会递归到fun(15,0)。然后到15%0,对0取余是未定义的行为,和除0是一样的。编译器可能会给出警告,但不仍然会通过。所以每次运行可能都会有不同的值,不是你输出语句造成的。
回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP