в то время как циклический факториал работает только до 20?

nix-store --delete /path Обратите внимание, что путь может быть активным и, следовательно, отказываться от удаления без --ignore-livenessи привилегий root.

2
20.09.2019, 22:47
2 ответа

В большинстве систем Bash использует 64 -битные целые числа со знаком. Вам понадобится другой инструмент, такой как bc, чтобы выйти за рамки этого.

Это означает, что с bash максимальное число, которое вы можете иметь, равно 2^63-1, равно 9,223,372,036,854,775,807, и вы превышаете это число:

awk 'BEGIN{print 2432902008176640000 * 21}'
51090942171709440000     #--> 51,090,942,171,709,440,000
11
27.01.2020, 21:49

Как и сказал doneal24, вам, вероятно, нужно идти bc.

Добавьте следующее в файл с именем fact.bc:

define f (x) {
  if (x <= 1) return (1);
  return (f(x-1) * x);
}

Теперь вы можете вызвать его в bc, предоставив файл :Например.

$>bc fact.bc <<< "scale=50;f(200)"
78865786736479050355236321393218506229513597768717326329474253324435\
94499634033429203042840119846239041772121389196388302576427902426371\
05061926624952829931113462857270763317237396988943922445621451664240\
25403329186413122742829485327752424240757390324032125740557956866022\
60319041703240623517008587961789222227896237038973747200000000000000\
00000000000000000000000000000000000
3
27.01.2020, 21:49

Теги

Похожие вопросы