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

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

剛學了c語言入門5-7的課程,有一個問題請教?

剛學了c語言入門5-7的課程,有一個問題請教?

C
Dancing_code 2016-10-17 00:11:38
#include <stdio.h>/* 定義獲取單詞數(shù)量的函數(shù) */int a;int getWordNumber(int n){?? ??? if(n == 1)??? {??????? return 1;??? ??? }??? else?{??? ?a=getWordNumber(n-1)+n ;? ????? printf("%d\n",a);????? ??? ??}}int main(){??? int num = getWordNumber(10);???? //獲取會了的單詞數(shù)量??? printf("第10天記了:%d個單詞。\n", num);??? return 0;}其實我就是在else里面最后一行刪掉了一個return a;,但這個程序前面運行出來的結果就和原來結果完全不同。。而是3,5,6,7,8,9,10,12,13。我就是想知道是怎么計算出來的這一列數(shù)??百思不得其解,萬望大神指點??!
查看完整描述

2 回答

已采納
?
onemoo

TA貢獻883條經驗 獲得超454個贊

首先說,有返回類型的函數(shù),每一個返回分支處都應該返回適當?shù)闹?/span>。 如果你刪掉了getWordNumber函數(shù)中else分支里的return語句,那么函數(shù)在運行到else分支退出時會返回什么? ?答案是返回值是不確定的,返回什么都有可能。所以最后的結果肯定不同。 因為返回值都可能是不確定的,究其結果也沒有意義。


其次,這代碼是“遞歸”,遞歸是有相應的邏輯的,你刪掉代碼也就實現(xiàn)不了遞歸的邏輯了。 如果你還沒理解什么是遞歸的話,我在老問答區(qū)有一個回答:http://idcbgp.cn/qadetail/90499? ?雖然不是講解這道題的,但解釋了遞歸的邏輯。

針對這代碼,你應該在else分支處返回?getWordNumber(n-1)+n 的值。

查看完整回答
反對 回復 2016-10-17
?
編程之夜

TA貢獻29條經驗 獲得超70個贊

自己設斷點調試
查看完整回答
1 反對 回復 2016-10-17
  • 2 回答
  • 1 關注
  • 1341 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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