前言:
此时兄弟们对“阶乘用c语言怎么写”大致比较重视,你们都想要学习一些“阶乘用c语言怎么写”的相关内容。那么小编同时在网上搜集了一些关于“阶乘用c语言怎么写””的相关资讯,希望我们能喜欢,咱们一起来了解一下吧!一、阶乘函数
数学上,尤其是组合数学,有一个相当常用的函数叫做阶乘(Factorial)。阶乘函数的参数是一个自然数,它会返回1与此数之间所有数的乘积。比如,6的阶乘是 1 × 2 × 3 × 4 × 5 × 6 = 720 。这相当有趣,因为对我们来说,它可以用一种递归函数来表示。
ELM榆木语言是函数式编程语言,函数式编程没有循环命令,用递归实现循环,下面的榆木的代码:
import Debugimport Html exposing (text)factorial n = case n of 0 -> 1 _ -> n*factorial (n-1) main = text <| Debug.toString <| factorial 6
显示结果为 720
二、双阶乘
双阶乘意为:从1(或2)隔一个数字乘一个,一直乘到n。比如,8的双阶乘是 8 × 6 × 4 × 2 = 384,
7的双阶乘是 7 × 5 × 3 × 1 = 105. 下面用榆木实现一个双阶乘函数doublefactorial.
import Debugimport Html exposing (text)doublefactorial n = case n of 0 -> 1 1 -> 1 _ -> n*doublefactorial (n-2)main = text <| Debug.toString <| doublefactorial 7
显示结果为 720
三、汉诺塔问题
三根柱子。在一根柱子上,从上到下,由小到大叠放着64个盘子。要把这些盘子搬到另一根柱子上。规则是:一次只能移动一个圆盘。大盘不能叠在小盘的上面。问:移动次数最小的方案?
先用榆木语言实现:
import Debugimport Html exposing (text)hanota : Int -> Inthanota n = case n of 1 -> 1 _ -> hanota (n-1)*2+1 --注:分解为子问题再递归 main = text <| Debug.toString <| hanota 10
显示为 1023
再用python语言实现:
a = "a"b = "b"c = "c"def hannota(n,a,b,c): count = 0 if n == 1: return 1 count = hannota (n-1,a,c,b) + count count = hannota (1,a,b,c) + count count = hannota(n-1,b,a,c) + count return countprint("最少移动次数:",lastcount = hannota(10,a,b,c))
体会是:榆木语言实现汉诺塔要比python精简点,特别是python要定义a,b,c三个无用但必要的参数,C++也一样,可能这就是函数式编程与面向对象式编程的不同。
标签: #阶乘用c语言怎么写