女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

遞歸實現依次打印出數字中的每一位

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 作者:C語言編程學習基地 ? 2022-05-05 15:17 ? 次閱讀

今天來分析一道非常經典的遞歸題目:實現依次打印出數字中的每一位。

代碼如下:

#include 
void Print(int n){  if (n > 9)    Print(n / 10);  printf("%d ", n % 10);}
int main(){  int num = 0;  scanf("%d", &num);  Print(num);  return 0;}

結果如下:

62dfacd6-c798-11ec-bce3-dac502259ad0.png

運行順序

談到遞歸的時候,最重要的就是要弄明白它究竟是怎么運行的

下面的方法非常直觀的表示了它的運算順序

這里我用粘貼代碼塊的方式來展示

剛開始執行的是scanf輸入,這里不再贅述

void Print(int n){  if (n > 9)    Print(n / 10);  printf("%d ", n % 10);}

這一塊是我們遞歸的主體

void Print(int n){  if (n > 9)    Print(3578 / 10);        if (n > 9)      Print(357 / 10);      printf("%d ", 357 % 10);//7          if (n > 9)        Print(35 / 10);        printf("%d ", 35 % 10);//5            if (n > 9)//這時候值為3,已經不滿足條件            Print(3 / 10);//該語句不執行          printf("%d ", 3 % 10);//3  printf("%d ", 3578 % 10);//8}

看起來可能有點亂,在這基礎上加上一些箭頭就會清晰了

62f41a86-c798-11ec-bce3-dac502259ad0.png

起初我的想法是,在進行if判斷之后,會先執行下面的printf,即先打印最后一位數8,再向前打印

實際上,if語句后的Print函數的嵌套調用是在下一行printf之前的、

也就是說它需要像圖中這樣完全調用完,直到if判斷為假后,才會從后往前運行printf語句

這才有了最開始我貼的結果

程序依次打印了每一位的數字

63093f10-c798-11ec-bce3-dac502259ad0.png

如果這篇博客對你有幫助,還請點贊收藏支持一下!萬分感謝!

原文標題:C語言習題:遞歸實現依次打印出數字,你學會了嗎?

文章出處:【微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4886

    瀏覽量

    70216
  • 遞歸
    +關注

    關注

    0

    文章

    29

    瀏覽量

    9159

原文標題:C語言習題:遞歸實現依次打印出數字,你學會了嗎?

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    請問WATHR取值為Pmax電能寄存器的每一位代表多少電能呢?

    請問WATHR取值為Pmax 電能寄存器的 每一位代表多少電能呢?書大佬指教。
    發表于 12-26 07:55

    周立功can程序解析每個字節每一位

    請教,周立功labview例程里,需要什么改動或者直接能把某個字節里的每一位顯示出來嗎
    發表于 04-22 17:25

    請問在串口調試實驗為什么不停的往串口調試助手里打印出數字?

    在串口調試實驗為什么不停的往串口調試助手里打印出數字??
    發表于 02-12 00:27

    我用printf數據傳輸到串口的數據每一位數上都加了30 例如數字是01 則串口助手上是31 請問我用LABVIEW程序怎么讀出01呢?

    我用printf數據傳輸到串口的數據每一位數上都加了30例如數字是01則串口助手上是31 請問我用LABVIEW程序怎么讀出01呢?我現在是將數據每一位都單獨讀出來 然后在把每一位的數
    發表于 11-12 17:01

    如何實現10位數字軟件激活碼 截取所有的1%作為有效激活碼

    如何實現10位數字軟件激活碼 截取所有的1%作為有效激活碼,嘗試了輸出所有排列,過于復雜,或者說是不是可以在每一位設置概率呢?求解答。
    發表于 04-23 15:42

    每一位C/C++程序員的調試工具 : GDB (GUN Debugger) 相關資料下載

    每一位C/C++程序員的調試工具 : GDBgdb 介紹gdb 常用命令gdb調試命令列表gdb 調試段錯誤gdb 介紹gdb 常用命令gdb調試命令列表gdb 調試段錯誤...
    發表于 07-02 07:08

    二進制每一位數可取

    二進制每一位數可取,方法:通過移位運算符>>、
    發表于 07-14 08:16

    如何利用C語言的域操作去實現對寄存器每一位的控制

    在單片機的編程,會使用到些IC里面的寄存器,而有些寄存器并不是每一位都是有效的,例如:這里的1-3則是保留的,不可以***作的。所以在對
    發表于 02-25 06:41

    Protel在線教程:在PCB如何打印出中空的焊盤

    Protel在線教程:在PCB如何打印出中空的焊盤
    發表于 04-22 09:05 ?1770次閱讀
    Protel在線教程:在PCB<b class='flag-5'>中</b>如何<b class='flag-5'>打印出</b>中空的焊盤

    數字匹配濾波器的遞歸折疊實現

      針對數字匹配濾波器(DMF)的FPGA實現提出種優化結構。利用16移位寄存器(SRL16E)的存儲潛力,設計遞歸延遲線(RDL);再
    發表于 05-20 14:53 ?5786次閱讀
    <b class='flag-5'>數字</b>匹配濾波器的<b class='flag-5'>遞歸</b>折疊<b class='flag-5'>實現</b>

    51寄存器的所有寄存器名稱,(包括寄存器每一位的作用及用法)資源詳解

    51寄存器的所有寄存器名稱,(包括寄存器每一位的作用及用法)資源詳解
    發表于 10-16 13:04 ?14次下載
    51寄存器的所有寄存器名稱,(包括寄存器<b class='flag-5'>每一位</b>的作用及用法)資源詳解

    3d打印機結構_3d打印機分類

    3D打印機簡稱(3DP)是一位名為恩里科·迪尼的發明家設計的種神奇的打印機,不僅可以“打印
    的頭像 發表于 04-28 14:19 ?2.1w次閱讀

    python打印出abcd的所有排列組合

    如何使用Python生成"abcd"的所有排列組合,我們首先需要了解排列和組合的概念。排列是組元素的有序排列,而組合是組元素的無序選擇。 為了打印出"abcd"的所有排列組合,我們可以使用
    的頭像 發表于 11-29 16:29 ?2023次閱讀

    python數字排列組合需要縮進嗎

    在Python,數字排列組合的實現通常需要使用循環和遞歸來生成所有可能的組合。對于代碼塊的循環和遞歸
    的頭像 發表于 11-29 16:40 ?520次閱讀

    matlab怎么取三數的每一位

    在MATLAB,可以使用些基本的算術和邏輯運算來取得個三數的每一位。下面是種基本的方法
    的頭像 發表于 12-28 14:44 ?2813次閱讀