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

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

請問有個C的主函數運行順序的一個問題

請問有個C的主函數運行順序的一個問題

C
慕后端8527005 2018-01-03 11:10:58
#include<stdio.h>void fun(char c){ if(c>'x') fun(c-1); printf("%c",c);}main(){ fun('z');}這個程序跑到c=x之后為什么會打出yz??看不懂是怎么回事??
查看完整描述

2 回答

已采納
?
慕用4063026

TA貢獻195條經驗 獲得超115個贊

遞歸函數,估計你想不通的是fun函數這個運行過程,fun帶入的第一值z>x執(zhí)行語句fun(c-1)也就是y(此時不執(zhí)行輸出z的語句)。接著y>x繼續(xù)執(zhí)行fun(c-1)(此時不執(zhí)行輸出z的語句),也就是fun(x)不滿足c>'x',執(zhí)行輸出語句x,結束fun(x)回到fun(y)執(zhí)行輸出y結束函數,回到fun(z)執(zhí)行輸出z

查看完整回答
反對 回復 2018-01-04
  • 慕后端8527005
    慕后端8527005
    那個。,請問打印x后怎么會執(zhí)行fun(y)不是直接結束么????我比較蠢。。
  • 慕用4063026
    慕用4063026
    因為fun的yz函數并沒有結束啊,你可以想象成一個盒子打開里面還有個盒子打開還有個盒子,打開最后一個盒子在從里往外關閉盒子
?
月薪過萬只是夢

TA貢獻4條經驗 獲得超2個贊

字符本身沒有什么可比較的,if (c>'x')? z賦予給了c,會把z 和 x 按 ASCII碼轉換為十進制;

于是便是if (106>104)? fun(106-1); fun(105)又會逐次運行,看出這是一個遞歸函數;

條件是到x (即104)便結束。

所以105,106又會按照ASCII碼表轉換回字符 y,z

查看完整回答
反對 回復 2018-01-04
  • 慕后端8527005
    慕后端8527005
    他打印了x之后,是怎么返回把yz打出來???不是打印了就終止么?
  • 月薪過萬只是夢
    月薪過萬只是夢
    不好意思ASCII碼表轉換說錯了, X,Y,Z應該是轉換成88,89,90; 遞歸函數會逐次運行到符合結束的條件,有點循環(huán)語句的味道; 你對遞歸函數不太理解,請看下http://idcbgp.cn/code/5504
  • 2 回答
  • 0 關注
  • 1347 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號