#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
????xvb
8
如果改變數(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
???127587825
13
4 回答

墨以所生
TA貢獻4條經(jīng)驗 獲得超1個贊
fun函數(shù)中fun(n,m);應該在主函數(shù)中用來取返回值或者調(diào)用的。比如Num=fun(n,m);
還有fun應該加一個返回值return 變量名;

半枯
TA貢獻101條經(jīng)驗 獲得超45個贊
這個是被fun里面的printf影響的,如果你把值設成m=15,n=0,輸出結(jié)果就是m的值,為什么,n為其他值的時候輸出的結(jié)果不是m的值,是因為帶printf的fun不再是int類型,超了

朕日理萬機
TA貢獻27條經(jīng)驗 獲得超28個贊
咦,我昨天好像回答過一次了,m%n,當n=0時是未定義行為,結(jié)果不可預測,跟你運行時內(nèi)存里的情況有關(guān)。所以源代碼里稍微改一下,就可能對運行時的內(nèi)存產(chǎn)生影響,就會產(chǎn)生完全不一樣的結(jié)果。所以不管是8,還是13,都是一種巧合。
- 4 回答
- 0 關(guān)注
- 2444 瀏覽
添加回答
舉報
0/150
提交
取消