Help in n factorial!!!
3 ビュー (過去 30 日間)
古いコメントを表示
Hello,
Please help me in this question :
"Write a program that reads a nonnegative integer and computes and prints its factorial."
I don't understand the question and even internet doesn't help me either.
Please anyone help me before 11/4/2011.
0 件のコメント
回答 (6 件)
rana ali
2017 年 4 月 17 日
編集済み: Walter Roberson
2019 年 6 月 8 日
n=input('the value of n: ');
f=1;
for i=1:n
f=f*i;
end
disp('factorial is')
disp(f)
2 件のコメント
John D'Errico
2017 年 4 月 17 日
I deleted your virtual duplicate (OTHER) answer. In the future, if you want to modify an answer, then edit it.
Walter Roberson
2017 年 4 月 17 日
For 23, this code produces 25852016738884978212864 instead of the correct 25852016738884976640000
Matt Fig
2011 年 4 月 9 日
What do you mean you don't understand the question? I find this very difficult to believe. You know what it is to write a program, right? You know what it is to compute something, then print it? Even if you don't know what a factorial is, the internet surely could help. Here:
Please think it through, do some research, then clarify what you don't understand. Folks here are glad to help when the asker (especially a homework doing asker) puts out some effort and keeps the topic to specific MATLAB questions.
2 件のコメント
Matt Fig
2011 年 4 月 9 日
Your code looks good, and Walter points out the infeasibility of fulfilling the requirements as written (or at least as relayed).
I would also point out that naming your M-file FACTORIAL will mask the built-in MATLAB function by the same name.
Walter Roberson
2011 年 4 月 9 日
Although your proposed code looks good, you will find that it does not produce correct answers for n=18 or above. Your program is required to handle all non-negative integers, not just 1 to 17. You might perhaps be able to negotiate that your program does not have to handle any integers greater than about 10^308.
You are, though, going to run in to considerable difficulties long before that -- for example, (2^27)! is approximately 8.35*10^1032606161 and there aren't enough elementary particles in the Universe to be able to write that number out exactly.
0 件のコメント
Mohammed Ali
2017 年 12 月 25 日
編集済み: Image Analyst
2017 年 12 月 25 日
Write a program to calculate the factorial N!: a. N!=1, N=0 b. N!=N*(N‐1)*(N‐2)...*3*2*1, N>0
n=input('enter n:')
fact=1
if(n==0)
fact=1
for i=n:1:-1
fact=fact*i
end
end
1 件のコメント
Image Analyst
2017 年 12 月 25 日
Nope, that won't do it. Did you actually try it?
It's even wrong in more ways than one.
duoduo chen
2019 年 5 月 9 日
編集済み: Walter Roberson
2019 年 5 月 9 日
n=input('Enter the value of n:');
factorial=1;
if n<0
fprintf('Error!\n');
elseif n==0
factorial=1;
fprintf('factorial=%d\n',factorial);
else
for ii=1:n
factorial=factorial*ii;
end
disp(['factorial=' int2str(factorial)]);
end
3 件のコメント
Stephen23
2019 年 5 月 9 日
Note that the elseif n==0 section is entirely superfluous.
You can start the loop iterations from 2 rather than 1.
As mentioned by Loginatorist eight years ago, the name factorial should be avoided.
Lawrence Liu
2019 年 6 月 8 日
function val=factorial(n)
if (n==0)
val=1;
else
val=n*factorial(n-1);
end
end
1 件のコメント
Walter Roberson
2019 年 6 月 8 日
This will fail when n exceeds 50, giving an error about recursion limit.
It will, as indicated in other responses, start producing incorrect answers long before that.
It will run indefinitely when asked to process a negative input.
参考
カテゴリ
Help Center および File Exchange で Startup and Shutdown についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!