第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

遞歸的輸出問題

遞歸的輸出問題

C C++
心雨翎馨 2017-03-17 21:01:49
#include<stdio.h>int?fun(int?m,int?n){??????if(n==0)????????return?m;?????printf("?????qwef\n");????fun(n,m%n);????printf("????xvb\n");}void?main(){????int?m=45,n=15;????printf("%d",fun(m,n));}這樣的輸出結(jié)果就是?????qwef????xvb8如果改變數(shù)中第二個printf則#include<stdio.h>int?fun(int?m,int?n){??????if(n==0)????????return?m;?????printf("?????qwef\n");????fun(n,m%n);????printf("???127587825\n");}void?main(){????int?m=45,n=15;????printf("%d",fun(m,n));}這樣的輸出結(jié)果就是?????qwef???12758782513為什么會這樣?我只是改變了一個輸出語句,為什么會對函數(shù)的返回值產(chǎn)生影響?
查看完整描述

3 回答

?
朕日理萬機(jī)

TA貢獻(xiàn)27條經(jīng)驗 獲得超28個贊

對不起前面說錯了,原因是在于fun函數(shù)只有n==0會返回確定的值,在n!=0的時候沒有指定返回值,導(dǎo)致了未定義行為。

查看完整回答
反對 回復(fù) 2017-03-19
?
朕日理萬機(jī)

TA貢獻(xiàn)27條經(jīng)驗 獲得超28個贊

兩次運行都會遞歸到fun(15,0)。然后到15%0,對0取余是未定義的行為,和除0是一樣的。編譯器可能會給出警告,但不仍然會通過。所以每次運行可能都會有不同的值,不是你輸出語句造成的。

查看完整回答
反對 回復(fù) 2017-03-18
  • 心雨翎馨
    心雨翎馨
    不是很懂,能不能說清楚點
  • 心雨翎馨
    心雨翎馨
    可是如果我去掉函數(shù)中第二個printf語句,無論怎么運行結(jié)果都不會變化、
  • 朕日理萬機(jī)
    朕日理萬機(jī)
    像15%0這個操作,運行結(jié)果不是確定的,不能控制,不能預(yù)料。哪怕你目前運行多次結(jié)果都一樣,但不保證換個機(jī)器,換個編譯器,重新編譯運行,還能得到同樣的結(jié)果。所以不管你是改了輸出語句,還是稍微改下代碼,在之前定義幾個int i, j, k等沒用的變量,都會對結(jié)果有影響,而且怎么影響不知道。不像15-0怎么算都是15
  • 3 回答
  • 0 關(guān)注
  • 1565 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號