Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

вычисление факториала. Как вычислить факториал?

вычисление факториала. Как вычислить факториал?
Я
   YamEgor
 
13.11.20 - 14:18
Добрый день подскажите что такое факториал и как он вычисляется? на собеседовании дали такое задание : "Нахождение факториала от числа, заданного в переменной N"
   mikecool
 
1 - 13.11.20 - 14:20
ээээ, это  же школьная программа
а так - рекурсия
   polosov
 
2 - 13.11.20 - 14:21
(0) Серьезно не знаешь? И не знаешь где посмотреть?
Не возьмут программистом с такими навыками.
   polosov
 
3 - 13.11.20 - 14:22
(1) Цикла достаточно ж вроде.
   mikecool
 
4 - 13.11.20 - 14:23
(3) да я как то решал в школе, так в памяти и осталась рекурсия )
   ДенисЧ
 
5 - 13.11.20 - 14:25
   acht
 
6 - 13.11.20 - 14:26
(0)  Вот, держи:

Процедура КнопкаВыполнитьНажатие(Кнопка)

    ПеременнаяN = 0;
    Если ВвестиЗначение(ПеременнаяN, "Введите значение переменной N") Тогда
        Факториал = 0;
        Если ВвестиЗначение(Факториал, "Введите значение факториала N") Тогда
            Предупреждение("Значение факториала " + ПеременнаяN + " равно " + Факториал);
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры
   ДенисЧ
 
7 - 13.11.20 - 14:26
(4) to iterate is human to recurse divine (Питер Дойч)
   Kassern
 
8 - 13.11.20 - 14:46
(0) Чтоб ты понимал факториал 5 равен: 5!=1*2*3*4*5=120
Дальше думаю и школьник разберется как в цикле для N числа посчитать факториал.
   vladko
 
9 - 13.11.20 - 14:51
(0) я тоже при приёме собеседования задавал сразу сходу придумать алгоритм вычисления факториала от числа. Сразу видно, если ли алгоритмическое мышление у кандидата в падаваны или нет.
   Kassern
 
10 - 13.11.20 - 14:54
(9) У меня в свое время была другая задачка, но тоже интересная при приеме. Есть 2 числа А,Б нужно поменять значения переменных местами без использования третьей переменной.
   ДенисЧ
 
11 - 13.11.20 - 14:59
(10)
#!\user\bin\python
# заполнение данных

(b,a)=(a,b)

# вывод результата

)))
   Asmody
 
12 - 13.11.20 - 15:01
(11) в первой строке какая-то фигня
   Волшебник
 
13 - 13.11.20 - 15:02
(1) Лучше циклом
   Малыш Джон
 
14 - 13.11.20 - 15:04
Серьезно?  "Что такое факториал?" ???
   ДенисЧ
 
15 - 13.11.20 - 15:06
(12) s\user\usr\
   ДенисЧ
 
16 - 13.11.20 - 15:06
s/\\/\/\
   Kassern
 
17 - 13.11.20 - 15:08
(11) Давай еще обертку ком сделаем чтобы вызывать скрипты питона сразу из 1с)
   Ненавижу 1С
 
18 - 13.11.20 - 15:09
на собеседовании надо уметь разными способами
   acht
 
19 - 13.11.20 - 15:14
(10) Упражнение из первого тома Кнута, примерно 18 страница:
Докажите, что если n - целое число, n > 2, то уравнение x^n + y^n = z^n неразрешимо в целых положительных числах x, y, z
=)
   ДенисЧ
 
20 - 13.11.20 - 15:15
(17) Ком устаревшая технология. Нужен хппт-сервис и 7 микросервисов с лоад-балансером.
   Волшебник
 
21 - 13.11.20 - 15:15
(18) За вычисление факториала рекурсией можно бить по рукам. Дело в том, что при достаточно большом N возникнет переполнение стека и 1С вылетит с дампом, только мяукнув в технологический журнал. Ошибки не будет, сразу вылет.
   ДенисЧ
 
22 - 13.11.20 - 15:15
(19) Решение есть?
   ДенисЧ
 
23 - 13.11.20 - 15:15
(21) Не вылетит. Раньше переполнение по размеру числа будет
   acht
 
24 - 13.11.20 - 15:17
(22) "автор данной книги будет очень признателен, если ему сообщат решение как можно быстрее (при условии, что оно правильно)"
   Kassern
 
25 - 13.11.20 - 15:17
(17) А для большего изврата можно поднять fastAPI через питон и воткнуть на гет запрос ответ с нужными значениями переменных. в 1с через html документ воткнуть js скрипт, который обратиться нужному ресурсу по кнопке и отобразит полученные данные)
   acht
 
26 - 13.11.20 - 15:19
(25) При этом используя авторизацию openid, это важно!
   Волшебник
 
27 - 13.11.20 - 15:23
(23) Проверил. Вылетает
   Lama12
 
28 - 13.11.20 - 15:35
(8) Не забудь сказать что 0!=1. :-)
   Lama12
 
29 - 13.11.20 - 15:37
(19) Это вроде одна из задач тысячелетия.
   RomanYS
 
30 - 13.11.20 - 15:39
(29) Теорема Ферма, вроде решена уже.
(24) автору сообщили уже :)?
 
 Рекламное место пустует
   ДенисЧ
 
31 - 13.11.20 - 15:40
(27) Да и фиг с ней. Поставь 64бит клиента
(29) Обычно это люди называют теоремой Ферма...
(30) Полностью - нет. Доказаны теоремы, которые к ней сводятся
   ДенисЧ
 
32 - 13.11.20 - 15:41
(28) 0 != 1 === true...
   Lama12
 
33 - 13.11.20 - 15:43
(30) Вот блин. Не узнал ее. :-( Старею.
   dmpl
 
34 - 13.11.20 - 15:45
(19) Правильный ответ на собеседовании: "Какое это отношение имеет к программированию? Есть задача - надо решать."
   Ненавижу 1С
 
35 - 13.11.20 - 15:45
(21) не надо никого бить, надо просто уметь и таким способом
   Волшебник
 
36 - 13.11.20 - 15:48
(31) 64-битный клиент не поможет, потому что переполняется стековая память, а не память кучи.
   Малыш Джон
 
37 - 13.11.20 - 15:50
(31) а за что же тогда Абелевскую премию дали?
   RomanYS
 
38 - 13.11.20 - 15:51
(31) Ну проверять решение я не полезу :), но поверю вики (и обрывкам воспоминаний), что доказана полностью и ещё в прошлом тысячелетии
https://ru.wikipedia.org/wiki/Великая_теорема_Ферма
   ДенисЧ
 
39 - 13.11.20 - 15:55
(37) (38) Ну и фиг с ним, не из моего кармана (если) выдали... )))
Я не очень слежу за таким.
Доказали - так доказали, лишили меня удовльствия на пенсии покорпеть
   Kigo_Kigo
 
40 - 13.11.20 - 15:58
(10)
А= А*Б;
Б =А/Б;
А=А/Б; )))
   NeiTRoN4ik
 
41 - 13.11.20 - 16:08
(40) ога, например 0 и 3 ))
   Kassern
 
42 - 13.11.20 - 16:16
(41) ахах я спецом про 0 не написал)) думал попадется кто нить) я сам в свое время, когда решал так же замутил через умножение, на что мне так же на 0 ткнули)
   Kigo_Kigo
 
43 - 13.11.20 - 16:17
(41) ладно пойдем другим путем, 
а= а+б
б=а-б
а=а-б
   Малыш Джон
 
44 - 13.11.20 - 16:17
(40)  Неплохо))
А = Ln(B)/Ln(A);
B = B^(1/A);
A = A^B;
   Малыш Джон
 
45 - 13.11.20 - 16:18
(43) но это то уж банально и неинтересно)
   Kigo_Kigo
 
46 - 13.11.20 - 16:19
(43) Кстати по мат правила работает и для отрицательных чисел, причем (40) плохо стработает с дробными частями из-за округления )))
   Chameleon1980
 
47 - 13.11.20 - 16:28
крепкий орешек
   Kassern
 
48 - 13.11.20 - 16:32
(44) В конце наверное вместо A^B нужно B^A
   Малыш Джон
 
49 - 13.11.20 - 16:34
(48) да, верно)
   Bigbro
 
50 - 13.11.20 - 16:38
для больших N понадобятся специальные методы,
а так циклом конечно
   YamEgor
 
51 - 13.11.20 - 16:43
Нифига столько написали пока я думал !!
   Факториал = 1;    
   Для Сч = 1 По ЧислоN Цикл
         Факториал = факториал * Сч;
   КонецЦикла;
вот так будет ))
есть еще задачи написать?
   Ненавижу 1С
 
52 - 13.11.20 - 16:48
Процедура ВыражениеВычислить(Команда)
    
    А = 4.25;
    Б = 4;

    Для й=1 По 100 Цикл
        Ц = Шаг(А,Б);            
        Б = А;
        А = Ц;        
    КонецЦикла; 
    
КонецПроцедуры


Функция Шаг(А,Б)

    Возврат 108 - (815-1500/Б)/А;    

КонецФункции


Чему будет равно Ц в результате?
   YamEgor
 
53 - 13.11.20 - 17:03
Сделать матрицу случайных чисел 5 x 5. Вывести пользователю. Получить по исходной матрице транспонированную матрицу. Вывести пользователю.


не пойму как это: Сделать матрицу случайных чисел 5 x 5?
И что такое транспонированную матрицу?
   NeiTRoN4ik
 
54 - 13.11.20 - 17:07
(53) 1 - двумерный массив. 2 - примерно, как в (5)  =)
   Ненавижу 1С
 
55 - 13.11.20 - 17:22
(53) надо прокаичать математическое образование
https://ru.wikipedia.org/wiki/Транспонированная_матрица
   RomanYS
 
56 - 13.11.20 - 17:24
(52) Это для устного счёта или можно в 1С загнать?
   Ненавижу 1С
 
57 - 13.11.20 - 17:27
(56) в 1С оно дает 100
но верный ответ должен быть близок к 5
   RomanYS
 
58 - 13.11.20 - 17:29
(57) Но это код на 1С, поэтому "верный" звучит двусмысленно :)
   МихаилМ
 
59 - 13.11.20 - 17:46
на ис  один человек развлекся факториалом

http://catalog.mista.ru/1c/articles/1256963/
http://catalog.mista.ru/1c/articles/1257170/
   YamEgor
 
60 - 13.11.20 - 17:53
вот еще: Убрать условный оператор «Если» из следующего блока (А может принимать значение 0 или Если (А = 0) Тогда
    B = 2;
Иначе
    В = 1;
КонецЕсли;

не пойму что здесь надо?
 
 Рекламное место пустует
   Ботаник Гарден Меран
 
61 - 13.11.20 - 17:59
Можно в Excel быстро состряпать.
4.64473684210522
   Ботаник Гарден Меран
 
62 - 13.11.20 - 17:59
Предыдущий к (52).
   DTX 4th
 
63 - 13.11.20 - 18:00
Теорему ферма доказали таки??? Круто
Последнее, что я помню - кто-то выкатил доказательство, но оно было сложным, а все остальные уже задолбались проверять неправильные доказательства, и все как-то застыло на месте)
Побольше бы таких веток)

(52) В чем прикол?
   Ненавижу 1С
 
64 - 13.11.20 - 18:01
(60) в = а+2;
   Ненавижу 1С
 
65 - 13.11.20 - 18:03
(58) из-за ошибок округления результат скатывается к неверному пределу
   RomanYS
 
66 - 13.11.20 - 18:09
(65) Причины понятны, только код на 1С не надо давать, а то доказать что результат не верный де-юре уже нельзя)
   RomanYS
 
67 - 13.11.20 - 18:10
(64) прикол?
В = ?(А = 0, 2, 1);
   Ботаник Гарден Меран
 
68 - 13.11.20 - 18:19
(60)
Это задача не про 1С.
y = 2-ЗНАК(x)*ЗНАК(x)
   YamEgor
 
69 - 13.11.20 - 18:28
(67) ага, кажется так!
   Ненавижу 1С
 
70 - 13.11.20 - 18:41
(67) ну формально да, но условный оператор остался
   bolder
 
71 - 13.11.20 - 18:41
(0) Адекватный работодатель. Думаю у него еще не мало вопросов!
   Провинциальный 1сник
 
72 - 13.11.20 - 18:59
Если факториал большой (больше n>100), то смысла его считать циклом нет, надо считать по формуле Стирлинга
https://ru.wikipedia.org/wiki/Формула_Стирлинга
   СвинТуз
 
73 - 13.11.20 - 18:59
(21)
На собеседованиях есть вопрос по рекурсии?
   Креатив
 
74 - 13.11.20 - 19:08
В (60) задание написано криво. Не хватает скобки. Думаю, что если всё переписать аккуратно, то код упростится до
в=2;
   Волшебник
 
75 - 13.11.20 - 19:25
(73) Да. Приведите пример полезного применения рекурсии при автоматизации экономической деятельности предприятия, т.е. не вычисление факториала.
   bolder
 
76 - 13.11.20 - 19:33
(75) Ежедневный пример -УПП и ERP, получение структуры изделия в рекурсии.
   rphosts
 
77 - 13.11.20 - 19:34
(27) Эээээ, у меня скажем так 8.2.13 при сложении в рекурсии 1+2+3+4... скажем так вылеты были между 5К и 6К. На более старших релизах не пробовал
   МихаилМ
 
78 - 13.11.20 - 19:36
   YamEgor
 
79 - 13.11.20 - 19:37
(71) вот еще один:
4.
Реализовать алгоритм в 1С
Вводятся целые числа a и b. Гарантируется, что a не превосходит b. Выведите (через пробел) все четные числа от a до b (включительно).

я так и не понял сколько там чисел между a и b? или от фонаря  взять?
   Конструктор1С
 
80 - 13.11.20 - 19:39
(1) рекурсия для факториала не нужна, достаточно цикла
   Креатив
 
81 - 13.11.20 - 19:40
(79)Это уж совсем просто. Цикл для от а до b. Если остаток от деления счётчика на 2 равен нулю, то число чётное.
   Волшебник
 
82 - 13.11.20 - 19:41
(79) их там примерно (b-a)/2
   Волшебник
 
83 - 13.11.20 - 19:41
(81) медленно.
Надо найти первое чётное и затем циклом +2, +2...
   Конструктор1С
 
84 - 13.11.20 - 19:42
Ай, блин. Уже наотвечали про цикл...


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.