Неправильный результат факториала - C (СИ)
Формулировка задачи:
Вот код программки - просто тестирую среду программирования VС 2005++
Вроде все правильно но результат каждый раз то в 6 то в 7 раз больше нужного. Вопрос, что то со средой программирования или я, что-то упускаю.
#include "stdio.h"
int fact(int z);
int fact(int z){
if (z==0){
printf("Konec\n");
}
else{
return z*fact(z-1);
}
}
int _tmain()
{int q;
int z=6;
printf("%d",fact(z));
scanf("%d",q);
return 0;
}Решение задачи: «Неправильный результат факториала»
textual
Листинг программы
#include "stdio.h"
int fact(int z);
int fact(int z){
if (z==0){
printf("Konec\n");
return 1;
}
else{
return z*fact(z-1);
}
}
int _tmain()
{int q;
int z=6;
printf("%d",fact(z));
scanf("%d",q);
return 0;
}
Объяснение кода листинга программы
- Включаем библиотеку
stdio.h, которая содержит функции для ввода и вывода данных. - Определяем функцию fact(int z), которая будет вычислять факториал числа.
- Внутри функции fact(int z), если число z равно 0, то выводим сообщение
Konecи возвращаем 1. - Внутри функции fact(int z), если число z не равно 0, то возвращаем произведение числа z и результата вызова функции fact(z-1).
- В функции main(), задаём значение переменной z равным 6.
- Вызываем функцию fact(z) и выводим её результат на экран.
- Считываем с помощью функции scanf() значение переменной q.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.