циклы — C ++ факториал программа делает странную математику

Очень плохо знаком с C ++. Делая эту факториальную программу, я каким-то образом просмотрел код и что-то создал, но возвращаемое значение всегда в 10 раз больше правильного. Например, факториал для 5 рассчитывается по 1200 вместо 120, а факториал по 3 — по 60. Почему дополнительная единица?

Это код:

#include <iostream>

using namespace std;

int main() {

int i, j, num;

cout << "Compute factorial: " << endl;

cin >> num;

for (i=1; i<num; i++){

for (j=num; j>1; j--)

num *=(j-i);

cout << num;
}

return 0;
}

1

Решение

Все, что вам нужно, это одна петля. Этот путь должен быть намного проще.

#include <iostream>

using namespace std;

int main() {

int i, j=1, num;

cout << "Compute factorial: " << endl;

cin >> num;

for (i=num; i>0; i--){
j *= i;
}

cout << j << endl;
}
1

Другие решения

for (i=1; i<num; i++){

num *=i;
}

Этого должно быть достаточно

0

Я думаю, что вы не совсем понимаете цикл, и будьте осторожны с изменением числа
попробуйте этот кусок кода, надеюсь, это поможет

#include <iostream>

using namespace std;

int main() {

int i, j, num;

cout << "Compute factorial: " << endl;

cin >> num;
int output_num = 1;
for (i=1; i<=num; i++){

output_num *= i;

}
cout << output_num;

return 0;
}
0

Используйте этот код:

#include<iostream>
using namespace std;
int main()
{
int num,fact=1;
cout<<" Enter the no. to find its factorial:";
cin>>num;
for(int a=1;a<=num;a++)
{
fact=fact*a;
}
cout<<"Factorial of a given Number is ="<<fact<<endl;
return 0;
}

Выход :

введите описание изображения здесь

0

использование двух циклов для вычисления факториала очень сложно ….. и вам это не нужно.
Попробуй это

#include <iostream>

using namespace std;

int main() {

int i,num;
cout << "Compute factorial: " << endl;
cin >> num;
for(i=num;i>1;--i)
num*=(i-1);

cout << num;

return 0;
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector