一尘不染

不同语言的阶乘算法

algorithm

我想了解阶乘子例程或程序的所有不同处理方法。希望任何人都可以来这里看看他们是否想学习一种新语言。

想法:

  • 程序
  • 功能性
  • 面向对象
  • 一班轮
  • 迷惑
  • 奇数球
  • 错误代码
  • 多种语言

基本上,我想看一个例子,说明编写算法的不同方法,以及它们在不同语言中的外观。

请限制为每个条目一个示例。如果您想突出显示一种特定的样式,语言或一个经过深思熟虑的想法以使自己适合发表在一个帖子中,那么我将为每个答案提供一个以上示例。

唯一真正的要求是,必须以所有表示的语言找到给定参数的阶乘。

要有创意!

推荐指南:

#语言名称:可选样式类型

   -可选的要点

    代码在这里

其他参考文本在这里

我将偶尔地编辑所有格式不正确的答案。


阅读 236

收藏
2020-07-28

共1个答案

一尘不染

多种语言:5种语言,全部使用bignums

因此,我写了一个通俗易懂的语言,可以用我经常用的三种语言编写,也可以是我对这个问题的其他回答中的一种,也是我今天刚刚学到的。这是一个独立的程序,它读取包含非负整数的一行,并打印包含其阶乘的一行。Bignum用于所有语言,因此最大可计算阶乘仅取决于计算机的资源。

  • Perl :使用内置的bignum包。用运行perl FILENAME
  • Haskell :使用内置的bignums。与runhugs FILENAME或与您喜欢的编译器等效的文件运行。
  • **C ** :需要GMP以获得bignum支持。要使用g 进行编译,请使用g++ -lgmpxx -lgmp -x c++ FILENAME链接到正确的库。编译后,运行./a.out。或使用您最喜欢的编译器。
  • brainf * ck :我在这篇文章中写了一些bignum支持。使用Muller的经典发行版,使用进行编译bf < FILENAME > EXECUTABLE。使输出可执行并运行。或使用您喜欢的发行版。
  • 空格 :使用内置的bignum支持。用运行wspace FILENAME

编辑: 添加了空白作为第五种语言。顺便说一句,你 换行的代码<code>标签; 它打破了空白。同样,代码在固定宽度上看起来更好。

char //#b = 0 + 0 {-| 0 * /; #>>>>,---------- [>>>>,--------
#define a / *#-] >>>> ++ <<<<<<<< >> ++++++ [<------>-] <-<<<<
#Perl> <> <> <> <> <> <> << >>>>> [[>> + <<-] >> [<< +> +>-] <->
#C ++-> <> <> <> <> <> <> <> <+ <[>>>> + <<<-<[-]]> [-]
#Haskell >>]> [-<<<<< [<<<< >>>>> [[>> + <<-] >> [<< +> +>-] >>]]
#空白>>>> [-[> + <-] + >>>>]] <<<< [<<<<] <<<< [<<<<
#brainf * ck> <] >>>>> [>>> [>>>>] >>>> [>>>>] <<<< [[>>>> * /
exp; ; //;#+ <<<<-<<<<] >>>> + <<<<<< [<<<<] [。POLYGLOT ^ 5。
#include <gmpxx.h> //] >>>>-[>>> [>>>>] >>>> [>>>>] <<<< [>>
#定义eval int main()//> + <<<-] >>> [<<< + >> +>->
#include <iostream> // <] <-[>> + << [-]] << [<<<< >>>>>> [> [>>>
#定义打印std :: cout << //> <+ <-]> [<< +> +>-] << [>>>
#define z std :: cin >> // << + <<<-] >>> [<<< + >> +>-] <-> +++++
#define c / * ++++ [-<[-[>>>> + <<<<-]] >>>> [<<<< + >>>>-] << * /
#define abs int $ n //> <<] <[>> + <<<< [-] >> [<< + >>-]] >>] <
#定义uc mpz_class事实(int $ n){/ * <<< [<<<<] <<< [<<
使用bignum; sub#<<] >>>>-] >>>>] >>> [> [-] >>>] <<<< [>> + <<-]
z {$ _ [0 + 0] = readline(* STDIN);} sub fact {my($ n)= shift;#>>
#[<< +> +>-] <-> + <[>-<[-]]> [-<<-<<<< [>> + <<-] >> [<< +> +> + * /
uc; if($ n == 0){return 1;}返回$ n * fact($ n-1); } //;#
eval {abs; z($ n); print fact($ n); print(“ \ n”)/ * 2;};#-] <->
'+ <[>-<[-]]>] << [<<<<] <<<-[>> + <<-] >> [<< +> +>-] + <[>- +++
-}-<[-]]> [-<< ++++++++++++ <<<<-[>> + <<-] >> [<< +> +>-++
事实0 = 1-> <> <> <> <> <> <> <] + <[>-<[-]]>] << [<< + +
事实n = n *事实(n-1){-<<] >>>>>> [[>> + <<-] >> [<< +> +++> +-}
main = do {n <-readLn; print(fact n)}-+>-] <-> + <[>>>> + << +
{-x <-<< [-]]> [-] >>]>] >>> [>>>>] <<<< [> +++++++ [<+++++++ >-]
<-。<<<<] ++++ A + Rex +++ 2009+编写。';#+++ x-}-x * /;}
2020-07-28