How would you write a non-recursive algorithm to calculate factorials?

后端 未结 22 1007
不思量自难忘°
不思量自难忘° 2020-12-10 11:39

How would you write a non-recursive algorithm to compute n!?

22条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-10 12:18

    In the interests of science I ran some profiling on various implementations of algorithms to compute factorials. I created iterative, look up table, and recursive implementations of each in C# and C++. I limited the maximum input value to 12 or less, since 13! is greater than 2^32 (the maximum value capable of being held in a 32-bit int). Then, I ran each function 10 million times, cycling through the possible input values (i.e. incrementing i from 0 to 10 million, using i modulo 13 as the input parameter).

    Here are the relative run-times for different implementations normalized to the iterative C++ figures:

                C++    C#
    ---------------------
    Iterative   1.0   1.6
    Lookup      .28   1.1
    Recursive   2.4   2.6
    

    And, for completeness, here are the relative run-times for implementations using 64-bit integers and allowing input values up to 20:

                C++    C#
    ---------------------
    Iterative   1.0   2.9
    Lookup      .16   .53
    Recursive   1.9   3.9
    

提交回复
热议问题