阶乘之算法

1、非递归

function jieChengFdg(num) {
  var result = 1;
  if(num < 0) return -1;
  if(num == 0 || num == 1) return 1;
  while(num>1) {
    result *= num--;
  }
  return result;
}
console.log(jieChengFdg(5));//120

2、递归

function jieChengDg(num) {
  var result = 1;
  if(num < 0) return -1;
  if(num == 0 || num == 1) return 1;
  if(num > 1) return num*jieChengDg(num-1);
}
console.log(jieChengDg(10));//3628800
时间: 2024-08-07 17:35:01

阶乘之算法的相关文章

2道阶乘的算法题

冲着51nod新UI去做了题,顺便总结一下,这里有2道阶乘的题, 1003 阶乘后面0的数量 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0. Input 一个数N(1 <= N <= 10^9) OutPut 输出0的数量 Input示例 5 Output示例 1 看到这题第一反应就是,这该不会是有规律的把? 好吧,确实,问题就是,末尾的0是怎么构成的,仔细想一下,还是能想出来,是5和其他偶数相乘得到的,这样下去,是不是只要因子5的个数就好了?

阶乘和算法的改进之阶乘和

#include<iostream> using namespace std; int Factorials(int n) { if (n == 0) return 1; else return n*Factorials(n-1); } int Factorialssum(int b) { int a; for(int i = b;i >= 1;i--) a+=Factorials(i); return a; } int main(void) { cout<<Factoria

JavaScript算法练习:阶乘(Factorial)函数

Factorial称之为阶乘,维基百科是这样描述的“一个正整数的阶乘是所有小于及等于该数的正整数的积,并且有0的阶乘为1.自然数n的阶乘写作n!.” 而阶乘函数是递归(Haskell)函数典型示例.在JavaScript中可能运用到递归函数.但在实际使用中,你可能没有考虑何时何地递归是有用的,或者使用不好会带来很多问题. 在这篇文章中我们来看看JavaScript如何实现阶乘的功能. 阶乘函数 先来简单的看看数学上阶乘函数,开头也说过,阶乘函数的参数是一个自然数,它返回1与此数之间所有数的乘积.

汇编语言-求X的阶乘

1. 题目:求X的阶乘值 2. 要求:输入一个整型数(不超过10),求出其阶乘值后输出,求阶乘的算法用子程序来实现. 3. 提示:可以用递归来实现,也可以用简单的循环来实现. 这里使用循环来实现: 对于汇编新手,最好通过高级语言的编程测试,然后再写汇编代码,这样效果会好一些. 求阶乘的C++代码如下: 1 //The program is to find the factorial from 1 to 10 2 //author:Karllen 3 //Date: 05/21/2014 4 5

PHP树生成迷宫及A*自己主动寻路算法

PHP树生成迷宫及A*自己主动寻路算法 迷宫算法是採用树的深度遍历原理.这样生成的迷宫相当的细,并且死胡同数量相对较少! 随意两点之间都存在唯一的一条通路. 至于A*寻路算法是最大众化的一全自己主动寻路算法 完整代码已上传,http://download.csdn.net/detail/hello_katty/8885779 ,此处做些简单解释,还须要大家自己思考动手.废话不多说,贴上带代码 迷宫生成类: /** 生成迷宫类 * @date 2015-07-10 * @edit http://w

精度计算-大数阶乘

精度计算-大数阶乘 本算法的目的在于计算一个比较大的数的阶乘,由于得到的结果比较大,是现有的数据类型无法存储的,所以我决定将结果存储在一个long a[]数组中. 我们的思路是把每4位数看做数组的一个元素来存储,例如:个.十.百.千存在a[0],万.十万.百万.千万存在a[1]以此类推. 我们用10的阶乘来模拟一下求结果大于4位数阶乘的过程,9的阶乘为362880,而10的阶乘为9的阶乘乘以10,在计算完9的阶乘时a[0] = 2880,a[1]=36,因为362880*10 = (36*10+

递归,冒泡,阶乘的介绍

递归,冒泡,阶乘 的介绍 一.递归 什么是递归? 自身方法的调用,叫递归 2.  递归的特点? (1)递归方法一直会调用自己直到某些条件被满足 (2)递归方法可有参数,而它会把一些新的参数值传递给自己 案例1:0, 1, 1, 2, 3, 5, 8.............30         第一种递归呈现效果                  static void Main(string[] args)          ...{                 int[] num=new

PHP树生成迷宫及A*自动寻路算法

PHP树生成迷宫及A*自动寻路算法 迷宫算法是采用树的深度遍历原理,这样生成的迷宫相当的细,而且死胡同数量相对较少! 任意两点之间都存在唯一的一条通路. 至于A*寻路算法是最大众化的一全自动寻路算法 完整代码已上传,http://download.csdn.net/detail/hello_katty/8885779 ,此处做些简单解释,还需要大家自己思考动手.废话不多说,贴上带代码 迷宫生成类: /** 生成迷宫类 * @date 2015-07-10 * @edit http://www.l

Android中的算法

算法是思想的体现形式,常见的算法做一些总结 算法简介 算法-Algorithm 解题方案的准确而完整的描述,是一系列解决问题的清晰指令 特征 有穷性,确切性,输入项,输出项,可行性 算法运算要素 算术运算:加减乘除等运算 逻辑运算:或.且.非等运算 关系运算:大于.小于.等于.不等于等运算 数据传输:输入.输出.赋值等运算 算法优劣评定 时间复杂度,空间复杂度,正确性,可读性,健壮性 LogN 二分法查找最坏的情况:对于N个元素的数组,第一次查找未找到则舍弃 N/2 个元素,剩下 N/2,同理第