求连续整数的阶层的和,时间复杂程度为O(n)的解法

简介: 求连续整数的阶层的和,时间复杂程度为O(n)的解法

请上传符合时间复杂度要求的,实验题第4题的算法。

一层for循环

#include <stdio.h>
int main()
{
  int n,sum=0,temp=1;
  printf("请输入一个n,该程序会帮你计算 1!+2!+3!+4!+5!+...+n!:\n");
  scanf("%d",&n);
  for(int i=1;i<=n;i++)
  {
    temp=temp*i;
    sum=sum+temp;
  }
  printf("结果是:%d",sum);
  return 0;
}

后面的想用递归来写一写,结果发现,如果只有一层的,就要设很多的未知数,所以就写了一个两层的

#include  <stdio.h>
int fact(int n);
int factsum(int n);
int main()
{
  int n;
  printf("请输入一个n,该程序会帮你计算 1!+2!+3!+4!+5!+...+n!:\n");
  scanf("%d",&n);
  printf("结果是:%d",factsum(n));
  return 0;
 } 
int fact(int n)
{
  int result;
  if (n == 1 || n == 0)
  {
    result = 1;
  }
  else
  {
    result = n * fact(n - 1);
  }
  return result;
}
int factsum(int n)
{
  int sum;
  if (n == 1)
  {
    sum = 1;
  }
  else if (n == 0)
  {
    sum = 0;
  }
  else
  {
    sum = fact(n) + factsum(n - 1);
  }
  return sum;
}

然后像这个复杂程度的话,我一般都是直接看for循环的次数,有无嵌套(有的话,那就是n的平方了),还有就是递归层数,还是比较好判断的,其次还要注意,他的循环次数

bye~

相关文章
|
4月前
|
算法 Java
LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
44 0
|
7月前
【错题集-编程题】数组中的最长连续子序列(排序 + 模拟)
【错题集-编程题】数组中的最长连续子序列(排序 + 模拟)
|
7月前
每日一题来噜!(记负均正,旋转数组中的最小数字)
每日一题来噜!(记负均正,旋转数组中的最小数字)
34 1
|
7月前
|
人工智能 算法
前缀和算法题(区间次方和、小蓝平衡和、大石头的搬运工、最大数组和)
前缀和算法题(区间次方和、小蓝平衡和、大石头的搬运工、最大数组和)
|
7月前
每日一题(最大连续1的个数,完全数计算)
每日一题(最大连续1的个数,完全数计算)
37 0
|
7月前
|
算法 Java
每日一题《剑指offer》数组篇之数组中出现次数超过一半的数字
每日一题《剑指offer》数组篇之数组中出现次数超过一半的数字
74 0
每日一题《剑指offer》数组篇之数组中出现次数超过一半的数字
|
7月前
|
人工智能 算法 Java
最长连续不重复子序列(蓝桥杯每日一题)
最长连续不重复子序列(蓝桥杯每日一题)
46 0
|
算法
代码随想录算法训练营第五十二天 | LeetCode 300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
代码随想录算法训练营第五十二天 | LeetCode 300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
52 1
|
7月前
|
机器学习/深度学习
【剑指offer】-和为S的连续正数序列-39/67
【剑指offer】-和为S的连续正数序列-39/67
|
算法
【算法挨揍日记】day06——1004. 最大连续1的个数 III、1658. 将 x 减到 0 的最小操作数
1004. 最大连续1的个数 III 题目描述: 给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。
412 1