当前位置: 首页 > news >正文

3.C++经典实例-计算一个数的阶乘

阶乘(factorial)是‌基斯顿·卡曼于1808年发明的运算符号,用于表示一个正整数n的所有小于及等于该数的正整数的积。自然数n的阶乘写作n!。例如,5的阶乘表示为5! = 1 × 2 × 3 × 4 × 5 = 120。

阶乘在数学和计算机科学中有广泛的应用。例如,在‌组合数学中,阶乘用于计算排列和组合的数量。此外,计算机科学中也有使用阶乘进行计算的算法。

例如20的阶乘的结果为:2432902008176640000,已经非常大,如果是再大数的阶乘已经无法大到无法写出他的完整形式。

使用递归法实现一个阶乘:

#include <iostream>
//计算阶乘
unsigned long long factorial_recursive(long n) {if (n == 0) return 1; // 基本情况return n * factorial_recursive(n - 1); // 递归调用
}int main() {int number;std::cout << "输入一个正整数: ";std::cin >> number;std::cout << "结果=" << factorial_recursive(number) << std::endl;return 0;
}

例如20的阶乘结果为:

如果我们输入90,就已经计算不出结果了:

除了使用递归也可以使用迭代方式来实现:

#include <iostream>unsigned long long factorial_iterative(int n) {unsigned long long result = 1;for (int i = 1; i <= n; ++i) {result *= i;}return result;
}int main() {int number;std::cout << "输入一个正整数: ";std::cin >> number;std::cout << "结果为=" << factorial_iterative(number) << std::endl;return 0;
}

输入20,计算阶乘的结果为:

看到结果是一样的,所以使用哪种方式是一样的,如果要计算再大的话,就需要用到第三方的库了,否则将无法显示大数。

http://www.lryc.cn/news/462094.html

相关文章:

  • 深入理解Qt中的QTableView、Model与Delegate机制
  • 解读《ARM Cortex-M3 与Cortex-M4 权威指南》——第1章 ARM Cortex-M处理器简介
  • java集合类的框架体系
  • 基于SpringBoot+Vue+Uniapp家具购物小程序的设计与实现
  • 什么是模糊测试?
  • 3.C++经典实例-奇数还是偶数
  • 真牛啊!全球人工智能标准教科书,斯坦福、麻省理工、加州大学等十多所顶尖机构为它点赞!!
  • Android——通过MediaStore查询图片
  • 手写Spring IOC-简易版
  • 【算法题】62. 不同路径(LeetCode)
  • 【VUE】Vue中的data属性为什么是一个函数而不是一个对象
  • ddos攻击介绍和排查方法
  • git clone --single-branch 提升效率
  • 代码随想录算法训练营第十天|1. 两数之和,第454题.四数相加II
  • 龙迅LT8911EX LVDS转EDP 点屏,大批量出货产品
  • 浅谈Oracle之游标
  • 基于在线教育系统源码的企业培训平台开发解决方案详解
  • Whisper 音视频转写
  • 【详尽-实战篇】使用Springboot生成自带logo或者图片的二维码-扫描二维码可以跳转到指定的页面-Zing-core
  • vue跨标签页通信(或跨窗口)详细教程
  • 【VUE】Vue3通过数组下标更改数组视图为什么会更新?
  • 前端转换double数据,保留两位小数
  • 【实战案例】JSR303统一校验与SpringBoot项目的整合
  • 忘记了系统root密码,如何重置root密码?
  • 7-基于国产化FT-M6678+JFM7K325T的6U CPCI信号处理卡
  • 计算机毕业设计 | SSM超市进销存管理系统(附源码)
  • 手撕数据结构 —— 堆(C语言讲解)
  • TS和JS中,string与String的区别
  • jna调用c++动态库linux测试
  • 智诊小助手TF卡记录文件导出