2014-10-05 46 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

相关问题