亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

c語言的遞歸問題

c語言的遞歸問題

C C# C++
kathria 2017-03-24 16:29:19
有以下程序#include <stdio.h>void f(int x[], int n){ ?if ( n > 1)?? ?{ ? printf("%d,", x[0]);?? ? ? ?f(&x[1], n-1);? ? ? ?printf("%d,", x[0]);?? ?}? ?else? ? ?printf("%d,", x[0]);}main( ){ ? int z[3] = {4, 5, 6};? ? f(z, 3); ? ?? ? printf("\n");?}程序運行后的輸出結果是A) ?6,5,4,6,5,4,B) ?4,5,6,5,4,C) ?4,5,6,4,5,6,D) ?6,5,4,5,6,誰能解釋一下程序怎么運行的,我不能理解這里的遞歸
查看完整描述

3 回答

?
三十二應遍塵剎

TA貢獻22條經驗 獲得超7個贊

void f(int x[], int n)

{ ?if ( n > 1)?

? ?{ ? printf("%d,", x[0]);?

? ? ? ?f(&x[1], n-1);

? ? ? ?printf("%d,", x[0]);?

? ?}

你應該是f(&x[1],n-1);這里的遞歸調用有疑惑吧,其實數組在內存中是以指針的形式存在的,int x[],數組名x代表了它的首地址,&是取地址符,&x[1],就是這個數組中第二個元素的地址,依次類推!如果這個你知道那也沒啥難得了吧,如果看不懂,請你看一看數組與指針的關系就行了

查看完整回答
1 反對 回復 2017-03-26
?
asd8532

TA貢獻143條經驗 獲得超187個贊

傳4,5,6和3進去輸出x[0]和x[0],兩個x[0]中間調用遞歸,所以兩個4中間有一些輸出輸出4.。。。。。4

傳5,6和2進去輸出x[0]和x[0],兩個x[0]中間調用遞歸,所以兩個5中間有一些輸出4 5.。。。5 4

6和1進去,直接輸出6然后退出4 5 6 5 4

查看完整回答
1 反對 回復 2017-03-24
  • kathria
    kathria
    這分別是哪個x【0】的輸出;使用了else的print嗎
  • asd8532
    asd8532
    傳456,x0就是4 傳56,x0就是5
  • kathria
    kathria
    f(&x[1], n-1); printf("%d,", x[0]); 每執行一遍遞歸,下面的print是每次都輸出一次,還是在最后的時候輸出一次?
  • 3 回答
  • 0 關注
  • 2185 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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