计算一个正整数的阶乘(JavaScript)

function factorial(n) {
    if (isFinite(n) && n > 0 && n == Math.round(n)) {   // 有限的正整数
        if (!(n in factorial))                          // 没有缓存结果
            factorial[n] = n * factorial(n - 1);
        return factorial[n];                            // 返回缓存结果
    }
    else {
        return NaN;
    }
}

factorial[1] = 1;

factorial(3);

计算一个正整数的阶乘(JavaScript)

时间: 2024-10-22 11:01:18

计算一个正整数的阶乘(JavaScript)的相关文章

求一个正整数的阶乘

/* 求一个正整数的阶乘. * 输入一个正整数,返回它的阶乘. * */ let fact = (function f(num){ "use strict"; if(num<=1){ return 1; } else { return num*f(num-1); } }); console.log(fact(4)); ** 原文地址:https://www.cnblogs.com/moyuling/p/8995693.html

FCC JS基础算法题(1):Factorialize a Number(计算一个整数的阶乘)

题目描述: 如果用字母n来代表一个整数,阶乘代表着所有小于或等于n的整数的乘积.阶乘通常简写成 n!例如: 5! = 1 * 2 * 3 * 4 * 5 = 120. 算法: function factorialize(num) { // 请把你的代码写在这里 var result = 1; for(var i=2;i <= num;i++){ result *= i; } return result; } factorialize(1); 原文地址:https://www.cnblogs.co

输入一个正数x和一个正整数n,求下列算式的值。要求定义两个调用函数:fact(n)计算n的阶乘;mypow(x,n)计算x的n次幂(即xn),两个函数的返回值类型是double

题目描述 输入一个正数x和一个正整数n,求下列算式的值.要求定义两个调用函数:fact(n)计算n的阶乘:mypow(x,n)计算x的n次幂(即xn),两个函数的返回值类型是double. x - x2/2! + x3/3! + ... + (-1)n-1xn/n! ×输出保留4位小数. 输入 x n 输出 数列和 样例输入 2.0 3 样例输出 1.3333 提示 无 来源 无 1 #include<stdio.h> 2 double fact(int); 3 double mypow(in

计算一个大数n的阶乘的位数宽度(十进制)(log i累加法 )

输入: 每行输入1个正整数n, (0<n<1000 000) 输出: 对于每个n,输出n!的(十进制)位数. 分析: 这道题采用蛮力法.根据定义,直接求解! 所谓n!的十进制位数,就是 log(n)+1, 根据数学公式有:n!=1*2*3*.....*n; lg(n!)=lg(2)+......lg(n); 代码: //输入一个数字n,请你计算该数的阶乘的十进制数的位数宽度 //比如:3!=6, 则宽度为1 //样例数据: //n=3 输出1 //n=32000 输出130271 //n=10

计算一个大数n的阶乘的位数宽度(十进制)转载

计算一个大数n的阶乘的位数宽度(十进制)(log i累加法 )转载 输入: 每行输入1个正整数n, (0<n<1000 000) 输出: 对于每个n,输出n!的(十进制)位数. 分析: 这道题采用蛮力法.根据定义,直接求解! 所谓n!的十进制位数,就是 log(n)+1, 根据数学公式有:n!=1*2*3*.....*n; lg(n!)=lg(2)+......lg(n); 代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

提示用户输入一个正整数n,计算1+2+3+…+n的和

/* */ #include <stdio.h> int main() { // 1.提示输入 printf("请输入一个正整数:\n"); // 2.接收输入 // 定义变量保存用户输入的整数 int n; scanf("%d", &n); if (n<=0) { printf("非法输入\n"); return 0; } // 3.计算 // (1 + n) * n / 2; // 定义变量保存和 int sum =

哪几个数的阶乘末尾有n个0?其中n是一个正整数,从键盘输入

题目:哪几个数的阶乘末尾有n个0?其中n是一个正整数,从键盘输入. 1 int main( void ) /* name: zerotail.cpp */ 2 { int num, n, c, m; 3 cout<<"输入零的个数(>0):"; cin>>n; 4 while( n>0 ) 5 { c=0; num=0; 6 do 7 { num+=5; 8 m=num; 9 while( m%5==0 ) 10 { c++; 11 m/=5; 12

给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。

问题描述:给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果.输入值小于1000.如,输入为10,程序应该输出结果为2.(共有两对质数的和为10,分别为(5,5),(3,7)) 附算法代码: public class PrimeNumber { //判断是否是质数 protected boolean isPrimeNumber(int num){ if(num == 2) return true;//2特殊处理 if(num < 2 || num % 2 == 0) r

输入一个正整数n,计算出[0,n]这些整数中的二进制数没有连续3个1的数字有多少

输入一个正整数n,计算出[0,n]这些整数中的二进制数没有连续3个1的数字有多少? 例子:输入数字9,则输出结果位9.因为[0-9]中,只有数字7有连续的三个'1'出现,别的都没有,所以一共有9个数字满足要求. 分析:这个题目与求解一个正整数中'1'的个数有点类似,就是进行一些循环处理. 代码如下: 1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int n,num_1=0,k=0; 6 cin>>n;