原标题:超级加倍!学会了就是一代土块(du guai)——你知道有多少种洗牌的方式吗?
数学中有一个非常可爱的函数——阶乘函数( factorial function),它会将输入数乘以所有小于它的正整数。例如,factorial (5) = 5×4×3×2×1 = 120。通常阶乘的结果惊人地庞大,顺其自然地,阶乘简记为一个感叹号。当一个数学家写下5! = 120或者13! = 6,227,020,800时,感叹号既代表阶乘,也传达了兴奋之情。
阶乘在数学中备受关注有很多原因,其中一个最普遍的原因是它代表了打乱物品方法的总数。假如你有 13 张扑克要洗,那么第一张牌就有13 种可能,第二张就剩下12 种可能,第三张剩下11 种可能,以此类推。仅仅13 张牌就有超过60 亿种排列方式。
对于一副包含 52 张牌的扑克,数字非常庞大。手动计算52! 会花费很长时间,这就是最适合让计算机帮我们的事了。为了让计算机帮我们干活,你需要将计算过程表达成一个计算机可以执行的算法。下面便是我写的一系列指令,将输入数乘以所有小于它的数。
步骤 1:将初始值 n 设置为运行结果。
步骤 2:将 n 减去 1。
步骤 3:将运行结果乘以新的 n。
步骤 4:重复步骤 2 和步骤 3,直到 n 减小至 1。
步骤 5&#