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

#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<<Factorialssum(3)<<endl;

}

原文地址:https://www.cnblogs.com/HackerEarl/p/12361412.html

时间: 2024-08-07 17:35:09

阶乘和算法的改进之阶乘和的相关文章

数据结构实践——归并排序算法的改进

本文是针对[数据结构基础系列(9):排序]的项目. [项目 - 归并排序算法的改进] 采用归并排序.快速排序等高效算法进行排序,当数据元素较少时(如n≤64),经常直接使用直接插入排序算法等高复杂度的算法.这样做,会带来一定的好处,例如归并排序减少分配.回收临时存储区域的频次,快速排序减少递归层次等. 试按上面的思路,重新实现归并排序算法. [参考解答] #include <stdio.h> #include <malloc.h> #include <stdlib.h>

ISAP算法对 Dinic算法的改进

ISAP算法对 Dinic算法的改进: 在刘汝佳图论的开头引言里面,就指出了,算法的本身细节优化,是比较复杂的,这些高质量的图论算法是无数优秀算法设计师的智慧结晶. 如果一时半会理解不清楚,也是正常的.但是对于一个优秀的acmer来说,其算法的本身,可以锻炼你的思维.增长见识! 下面是我对 Dinic和ISAP的认识: Dinic算法比较值钱的 EK算法来说,已经有很大的提高了,其优势在哪里呢? 就是在于他的分层思想.在层次图上增广.但是,他也有弊端. 就是每次进行增广后,对于层次图都进行了从头

KMP算法及其改进

KMP算法及其改进 字符串匹配算法也就是从一个很长的字符串里面找出与我们手中的字符串相匹配的字符串(是这个大字符串的第几个字符开始),对于这个问题我们有很简单的解法,叫BF算法,Brute Force也就是蛮力的意思,充分依靠计算能力来解决问题的方法,对于这种解法可以用下面的图片来表述: 上面的算法就是BF算法,不好之处是效率太低了,因为就像第三趟比较中那样,我们只有最后一个元素没有匹配上就要从头再来,主串的对应元素竟然要回头从第四个元素开始比较,我们明明比较到了主串的第七个元素,前面的工作全部

算法篇——因子和阶乘

来源:<算法竞赛入门经典>例题5.4.2 题目:输入正整数n(2≤n≤100),把阶乘n!=1*2*3*...*n分解成素因子相乘的形式,从小到大输出各个素数(2.3.5...)的指数.例如,5! 表示为 3 1 1(5!=23*31*51=120),程序忽略比最大素因子更大的素数(否则末尾会有无穷多个0) 样例输入: 5 53 样例输出: 5! = 3 1 1 53! = 49 23 12 8 4 4 3 2 2 1 1 1 1 1 1 1 分析: 注意到n<=100,所以素因子也一定

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的个数就好了?

阶乘之算法

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 &

数据结构之--冒泡排序算法及改进

冒泡排序,是我们学习数据结构第一个排序算法,也是一种最常见和简单的排序算法. 排序原理: 我们把一个数组从左到右依次两两元素比较,比较完成一趟后,能确定最大(最小)值,放在最右边(最左边): 剩下的元素重复上述步骤,直到整个数组有序. 该算法时间复杂度一般为n2  . java实现代码如下: public class BubbleSort { public static void swap(int[] array, int a, int b) { array[a] = array[a] ^ ar

求n的阶乘以及前n个数的阶乘和

//求n的阶乘 #include<stdio.h> #include<stdlib.h> int main() { int n = 0; int sum = 1; scanf( "%d", &n); while (n)                             //n如果为零,则不进入循环体,输出的sum初始值就是1 { sum *=n; n--; } printf( "%d\n", sum); system( &quo

一些关于Canny边缘检测算法的改进

传统的Canny边缘检测算法是一种有效而又相对简单的算法,可以得到很好的结果(可以参考上一篇Canny边缘检测算法的实现).但是Canny算法本身也有一些缺陷,可以有改进的地方. 1. Canny边缘检测第一步用高斯模糊来去掉噪声,但是同时也会平滑边缘,使得边缘信息减弱,有可能使得在后面的步骤中漏掉一些需要的边缘,特别是弱边缘和孤立的边缘,可能在双阀值和联通计算中被剔除.很自然地可以预见,如果加大高斯模糊的半径,对噪声的平滑力度加大,但也会使得最后得到的边缘图中的边缘明显减少.这里依然用Lena