Написать программу которая будет вычислять факториал заданного числа

Var n,k,f:integer; begin write(‘n=’); readln(n); k:=1; f:=1; while k
Как добавить хороший ответ?
Что необходимо делать:

  • Написать правильный и достоверный ответ;
  • Отвечать подробно и ясно, чтобы ответ принес наибольшую пользу;
  • Писать грамотно, поскольку ответы без грамматических, орфографических и пунктуационных ошибок лучше воспринимаются.

Что делать не стоит:

  • Списывать или копировать что-либо. Высоко ценятся ваши личные, уникальные ответы;
  • Писать не по сути. «Я не знаю». «Думай сам». «Это же так просто» — подобные выражения не приносят пользы;
  • Писать ответ ПРОПИСНЫМИ БУКВАМИ;
  • Материться. Это невежливо и неэтично по отношению к другим пользователям.

Пример вопроса
Русский язык
7 минут назад
Какой синоним к слову «Мореплаватель»?
Пожаловаться
Хороший ответ
Вася Иванов

Мореплаватель — имя существительное, употребляется в мужском роде. К нему может быть несколько синонимов.
1. Моряк. Старый моряк смотрел вдаль, думая о предстоящем опасном путешествии;

Найти факториал числа. Решение задачи на языке программирования Python


2. Аргонавт. На аргонавте были старые потертые штаны, а его рубашка пропиталась запахом моря и соли;
3. Мореход. Опытный мореход знал, что на этом месте погибло уже много кораблей, ведь под водой скрывались острые скалы;
4. Морской волк. Старый морской волк был рад, ведь ему предстояло отчалить в долгое плавание.

Источник: uchi.ru

Написать программу, которая находит факториал заданного числа. Java

Для нахождения факториала числа в Java можно воспользоваться циклом for:


public class Factorial
public static void main(String[] args)
int number = 5;
int factorial = 1;

for(int i = 1; i <= number; i++) factorial *= i;
>

System.out.println(«Факториал числа » + number + » равен » + factorial);
>
>

В данном примере задано число 5, для которого выполняется вычисление факториала. В цикле for происходит умножение переменной factorial на переменную i, которая в итерациях принимает значения от 1 до number. В конце программа выводит на экран результат вычисления.

Переписать другими словами
Написать сочинение по запросу
Или попробуйте другие режимы нейросети.

Читайте также:
Программа сканирования на компьютере не работает

Вы замучились искать, как найти факториал числа в Java? Не беда! Наша нейросеть онлайн поможет вам решить эту задачу быстро и легко. Просто введите число, и наша нейросеть пишет текст, который решает эту задачу за считанные секунды. Никаких сложных вычислений и неточностей – только чистый и точный ответ.

Воспользуйтесь нашей услугой прямо сейчас и наслаждайтесь результатом!

Источник: liftweb.ru

39 Задача: Вычислить факториал при помощи Python

Пятничный JS: единственно верный способ вычисления факториала

Вычисление факториала — одна из традиционных программистских задач для собеседований. Если вдруг кто забыл, факториал натурального числа N обозначается как N! и равняется произведению всех натуральных чисел от единицы до N включительно. Например, . Казалось бы, что тут сложного? Однако есть свои нюансы.

Например, сравним два самых распространённых способа вычисления факториала.

Через цикл

function factorial(n) < var result = 1; while(n)< result *= n—; >return result; >
Через рекурсию
function factorial(n, result)< result = result || 1; if(!n)< return result; >else < return factorial(n-1, result*n); >>

Многие скажут, что первый способ лучше, но это не так. Во-первых, циклы уже не в тренде, сейчас модно функциональное программирование.

Во-вторых, чем больше людей используют второй способ, тем быстрее в основных джаваскриптовых движках появится оптимизация хвостовой рекурсии.

В любом случае, оба эти способа слишком примитивны, чтобы по ним судить о знаниях кандидата. А вот опытный разработчик на React.js уже может написать что-то в этом роде:

var React = require(«react»); var Factorial = React.createClass( < render: function()< var result = this.props.result || 1, n = this.props.n; if(!n)< return >else < return result=/> > > >); module.exports = Factorial;

Согласитесь, выглядит гораздо солиднее. Впрочем, невооружённым глазом видно, что это всего лишь вариант рекурсивного вычисления. Сходство станет ещё сильнее, если переписать Factorial как функциональный компонент. И, разумеется, я не стал бы писать этот хабрапост, если бы не был готов предложить нечто принципиально новое.

Начнём издалека

Какую из возможностей Javascript недолюбливают и недооценивают сильнее всего? Недолюбливают настолько, что про неё даже придумали специальную поговорку? Конечно же, это eval. Можно сказать, что eval — это тёмная сторона Силы. А как мы помним из фильмов Джорджа Лукаса, нет ничего более крутого и впечатляющего, чем тёмная сторона Силы, поэтому давайте попробуем ей овладеть.

Читайте также:
Программа инфоклиника руководство пользователя

Можно было бы запихнуть в строку какой-нибудь из методов, приведённых в начале поста, а затем передать эту строку в eval, но в этом не было бы новизны. Поставим задачу таким образом, чтобы сделать этот хак невозможным. Пусть у нас есть такой вот каркас:

function factorial(n) < var f = «это единственное место в коде, которое мы имеем право изменить»; f = f.replace(«$», n); for(let i = 0; i < n; i++)< if(parseInt(f))< throw new Error(«Cheaters are not allowed»); >f = eval(f); > return parseInt(f); >

— и мы хотим, внеся изменения лишь в литерал строки f, сделать так, чтобы функция factorial взаправду вычисляла факториал. Вот задача, достойная истинного ситха.

Что-то это напоминает

Нам нужен код, который возвращает код, который возвращает код… Если забыть про конечную задачу — вычисление факториала, то есть одна хорошо известная штука, которая нам подойдёт. Эта штука называется квайн — программа, которая выводит свой собственный текст.

Про квайны на Хабре написано уже немало, потому я напомню лишь основные принципы квайностроительства. Чтобы сделать простейший квайн, нам нужно:

  1. Задать строку, которая содержит весь остальной текст программы.
  2. Подставить в эту строку её же саму
  3. Позаботиться об экранировании символов и прочих мелочах
  4. Вывести получившуюся строку
  5. .
  6. PROFIT

var o = < q: »’, b: ‘\’, s: ‘var o = ; console.log(Object.keys(o).reduce(function(a, k), o.s))’ >; console.log(Object.keys(o).reduce(function(a, k), o.s));

В строке o.s содержится весь остальной код, а также специальные подстановочные последовательности, начинающиеся с подчёркивания. Страшное выражение внутри console.log заменяет каждую подстановочную последовательность на соответствующее свойство объекта o, что обеспечивает выполнение пунктов 2 и 3 хитрого плана по созданию квайна.

Лирическое отступление

Здесь меня могут поправить: товарищ, это не простейший квайн, а монстр какой-то. Простейший квайн на js выглядит так:

!function $()()

Это правда, но не совсем. Такой квайн считается «читерским», поскольку он из тела функции получает доступ к её же тексту. Это почти то же самое, что прочитать с жёсткого диска файл с исходным кодом программы. Моветон, одним словом.

Читайте также:
Sid meier s civilization v прекращена работа программы

Скрещиваем ежа с ужом

Как же сделать так, чтобы наш квази-квайн модифицировал сам себя, а в результате превратился в одно-единственное число? Давайте забудем пока про вычисление факториала и постараемся просто написать строку, которая «схлопывается» через определённое количество eval’ов. Для этого нам понадобится:

  • Некий счётчик
  • Соответствующая ему подстановочная последовательность
  • Место, где этот счётчик модифицируется
  • Проверка того, завершён ли обратный отсчёт

var f = «var o = ; o.n—; » + «o.n ? Object.keys(o).reduce(function(a, k), o.s) : 0;'» + «>;» + «o.n—;» + «o.n ? Object.keys(o).reduce(function(a, k), o.s) : 0;» for(let i = 0; i

Обратите внимание на отсутствие return внутри строки: в нём нет необходимости, eval возвращает значение последнего выражения. Запустив этот код в консоли, можно c благоговением наблюдать, как с каждой итерацией цикла значение n уменьшается на 1. Если кто-то скажет, что для такого эффекта достаточно:

f.replace(/n: ([0-9]+)/, (_, n) => «n: » + (n — 1))

— то у него нет чувства прекрасного.

После этого подготовительного этапа уже совсем нетрудно написать итоговую версию вычисления факториала. Просто добавляется ещё одна переменная и чуть усложняется строчка с изменением.

function factorial(n)< var f = «var o = ; o.r *= o.n—; » + «o.n ? Object.keys(o).reduce(function(a, k), o.s) : o.r;'» + «>;» + «o.r *= o.n—;» + «o.n ? Object.keys(o).reduce(function(a, k), o.s) : o.r;» f = f.replace(«$», n); for(var i = 0; i < n; i++)< if(parseInt(f))< throw new Error(«Cheaters are not allowed.»); >f = eval(f); > return parseInt(f); >

Теперь вы можете смело идти на собеседование.

С живым кодом можно поиграться здесь. Как и в прошлой статье из рубрики «Пятничный JS» напоминаю: если вы сделаете что-нибудь подобное на продакшене, то попадёте в ад. С другой стороны, если вы сделаете это на собеседовании, то вам не дадут возможности сделать это на продакшене, и вы не попадёте в ад. Так что делайте это на собеседовании. Спасибо за внимание.

image

  • Ненормальное программирование
  • JavaScript

Источник: habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru