在笔试中,我想很多人都会遇到阶乘的编程题。今天突然想起自己的第一次笔试,就遇到了这样的题,还没在电脑上敲过。就随便来写一下,不知道大家在笔试的时候都写对了么?

很多人可能都会用int ,double之类的类型来存储结果,可是这样就很容易出现溢出的情况,不信您来试试100的阶乘!
其实回头想想,如果当初这个我用Perl,然后用bigint类型写也许就不用这么麻烦了。 而且Erlang貌似也有个阶乘模块可以直接写。先抛开这些不谈,用Java,C#之类的强类型语言,我们就要考虑溢出的情况,于是就有了以下的代码。
不过我刚才求了一次12345的阶乘,结果发现速度很慢,希望大家指教有没有什么效率更高一些的算法。

Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入你要计算的数字:");
            long n = Convert.ToInt64(Console.ReadLine());
            Console.Write("{0}的阶乘是:", n);
            Console.WriteLine(GetResult(n));
        }
        static string GetResult(long n)
        {
            List<long> listResult = new List<long>();
            listResult.Add(1);

int posCount=1;//记录总位数
            for (long i = 1; i <= n; i++)
            {
                long carry = 0;
                for (int j = 0; j < posCount; j++)
                {
                    
                    //先相乘
                    listResult[j] *= i;  
                    //加上进位
                    listResult[j] += carry;
                    long temp = listResult[j];
                    //存储个位数
                    listResult[j] %= 10;
                    carry = temp / 10;
                    if (carry > 0 && j==listResult.Count-1)
                    {
                        posCount++;
                        listResult.Add(0);
                    }
                }
            }

StringBuilder sb = new StringBuilder();
            for (int i = listResult.Count-1; i >=0 ; i--)
            {
                sb.Append(listResult[i].ToString());
            }
            return sb.ToString();
        }
    }
}

转载于:https://www.cnblogs.com/kym/archive/2009/10/05/1578224.html

笔试常见的“阶乘”编程题,你写对了么?相关推荐

  1. 回《笔试常见的“阶乘”编程题,你写对了么?》

    原帖链接:http://www.cnblogs.com/kym/archive/2009/10/05/1578224.html         我机器上没有C#的开发环境,所以没法测试作者这个代码的耗 ...

  2. 速学堂(java)第六章编程题自写答案

    速学堂(java)第六章编程题自写答案 1. 编写程序接收用户输入分数信息,如果分数在0-100之间,输出成绩.如果成绩不在该范围内,抛出异常信息,提示分数必须在0-100之间. 要求:使用自定义异常 ...

  3. c语言阶乘编程题,C语言编程题:阶乘计算

    一.题目:求20!的结果 描述:将数学概念的迭代关系式i!=(i-1)!*i转换为计算机循环意义上的迭代关系式--用新的变量存储新值(乘积),并不断由旧值递推出变量的新值.求n!的函数fanc(n)的 ...

  4. 快手2020校园招聘秋招笔试--工程C试卷 (编程题题解全)

    1.病毒检测 滑动窗口题 例子: 2 0101010(第一位下标为1) 1)找到第一个最短的满足k条件的子串,即s[2~4],l=2,r=4 2)找出这个子串左右连续的0的个数,分别为a,b,则对于这 ...

  5. 快手2020校园招聘秋招笔试--工程A试卷 (编程题题解全)

    "好序列"的个数 反着求,先求出所有序列个数,再减去不符合的个数. 黑边把图分成一个,一个的连通分量. 所以我们只要用dfs求出每个不包含黑边的连通分量的包含点个数sz,sz^k就 ...

  6. 58同城笔试:后端开发编程题

    1.找出二维字符数组里行字符数组所共有的字符 例子: 输入:{{"you","are","pig","dog"},{&q ...

  7. 牛客网 2017年校招全国统一模拟笔试(第五场)编程题集合- 彩色瓷砖

    时间限制:1秒 空间限制:32768K 牛牛喜欢彩色的东西,尤其是彩色的瓷砖.牛牛的房间内铺有L块正方形瓷砖.每块砖的颜色有四种可能:红.绿.蓝.黄.给定一个字符串S, 如果S的第i个字符是'R', ...

  8. 京东校招编程题——小熊分苹果

    刚做完京东校招在线笔试,第一道编程题居然没做出来,开始时没想到关键点还以为题目出错了,浪费了很多时间,郁闷-- 题目如下: N(1<N<9)只熊分一堆苹果,第一只熊(叫小东)把苹果平均分成 ...

  9. 西安交大软件考研915编程题总结

    西交软件915历年编程题汇总 今年刚刚参加了22年西交915考试,915的考试范围为(数据结构和算法,程序设计),相比于其他只考数据结构的高校来说,现在的915更偏,考试范围也更广.会考许多408数据 ...

最新文章

  1. CSS结构选择器四种结构关系的范围
  2. 三维感知,这些干货足够了!(自动驾驶/三维重建/SLAM/点云/标定/深度估计/3D检测)...
  3. c++不允许使用不完整的类型
  4. Aooms_基于SpringCloud的微服务基础开发平台实战_002_工程构建
  5. 编程语言中常见数据结构
  6. 常用JQuery插件整理
  7. T.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Reflectio
  8. 怎么画单极交流放大电路波形图_区别在哪?:VCC、VDD、VEE、VSS、数字地、模拟地、信号地、交流地、直流地!...
  9. linux复制文件夹到另一个目录_Linux|一个命令行统计给定目录中有多少个子目录,学浪计划...
  10. 英特尔推出业界领先的AI与数据分析平台,全新处理器、内存、存储、FPGA解决方案集体亮相
  11. Kotlin — 心印(熟悉与锻炼Kotlin语法)
  12. Windows 安装JDK
  13. cad lisp 示坡线_AutoCAD命令-画示坡线
  14. 校园生活旅游娱乐vlog篇
  15. STM32F407-用TB6600驱动器驱动57步进电机(代码+连线)
  16. 功夫熊猫中英文字幕版好句子_了解熊猫中的带有复制警告的设置
  17. 手机长度px值_html长度尺寸单位px像素
  18. springboot之Filter指定过滤URL的常见问题
  19. [数据集][VOC]高质量的目标检测数据集合集(持续更新)
  20. 可恶的as3.0,下载一个所谓的绿色flash cs5,竟然提示JAVA运行时环境初始化错误,请重新安flash

热门文章

  1. Linux环境下使用NLPIR(ICTCLAS)中文分词详解
  2. Matlab--view函数详解
  3. 变分法理解1——泛函简介
  4. 随机样本一致性:一种用于图像分析和自动制图的模型拟合模型(1)--RANRAC
  5. B+Tree及其创建过程
  6. toj 4614 Infinite Dictionaries
  7. python axes_python matplotlib中axes与axis的区别?
  8. 未能加载包studio package_Python包开发者的必备清单
  9. java程序样例_一个完整的java程序示例
  10. python 代码_如何让Python代码加速运行?