2014-10-05 26 views
0

我有一個任務,要求你輸入1到25之間的數字,做一個數字的事實,然後詢問你是否完成了,如果沒有,它會重新啓動循環,你做一個新的事實。我如何將這個變成一個大的聲明?

我一直在爲它的代碼工作,直到最後一步,我纔開始工作。我爲1到25之間的數字做了一個while循環,但是爲事實的for循環。當我試圖將兩者結合起來時,它沒有奏效,並吐出一個錯誤。

clear; 
clc; 
alldone = 'n'; 
fact = 1; 
num = input('Input a number between 1 and 25: '); 
    while (num < 1)||(num > 25); 
     num = input('\n That is not between 1 and 25, please try again: '); 
    for i=num:-1:2; 
    fact = fact * i; 
    fprintf('The factoral of %g is %g',num,fact); 
    end 
    alldone = input('Are you done? Type Y for yes: ', 's') 
end 

這就是我所做的,我不知道如何將for循環變成一段時間? 有誰知道?謝謝!

回答

1

這不是解決問題的最有效方法,但我儘量保持儘可能接近您的代碼。

clear; 
clc; 
alldone = 'n'; 

while alldone ~= 'Y' 
    fact = 1; 
    num = input('Input a number between 1 and 25: '); 

    while (num < 1)||(num > 25); 
     num = input('\n That is not between 1 and 25, please try again: '); 
    end 

    for i=num:-1:2; 
     fact = fact * i; 
    end 

    fprintf('The factoral of %g is %g. \n', num, fact); 
    alldone = input('Are you done? Type Y for yes: ', 's'); 
end 

由於這是某種形式的功課,我不會解釋什麼是我的小編輯您的代碼做,把它當作一個練習你:)當然,你可能會問,你應該找到它不清楚。祝你好運!

有點建議:使用正確的縮進!

小除了爲了回答OP:可使用formatting operatorsconversion characters被控制的輸出的格式。

+2

我唯一的評論是,當我測試代碼時,我得到1.124e + 21作爲事實,是因爲它使用%g?我應該改用%d嗎?編輯:我感謝你!得到它了! – user2237848 2014-10-05 15:37:13

+0

很高興你把它整理出來,我更新了答案:)祝賀你! – lucam 2014-10-05 15:46:12

+1

@ user2237848如果您不知道:'num'的階乘可以直接計算爲'factorial(num)'或'gamma(num + 1)' – 2014-10-05 16:29:49

相關問題