解题思路:
暴力的方法是写一个阶乘函数,从1到30调用函数,但是非常耗时。根据(n+1)! = n! * (n+1),可以定义一个i从1递增到30,定义一个变量保存更新后的阶乘,每更新一次就加到总和上,然后i++,这样就大大减轻了时间消耗。
注意事项:
阶乘和总和都要用double表示。
参考代码:
// 题目 1064: 二级C语言-阶乘数列 #include<iostream> using namespace std; int main() { int num = 30; // n的阶乘 int i = 1; // (n+1)! = n! * (n+1),此时i=n+1 double fact = 1; // 阶乘 double sum = 0; // 结果 while (num--) { fact *= i; sum += fact; i++; } printf("%.2e\n", sum); // 科学计数法(保留2位小数) return 0; }
0.0分
4 人评分
C语言程序设计教程(第三版)课后习题9.1 (C++代码)浏览:560 |
Biggest Number (C++代码)回溯法浏览:1612 |
简单的a+b (C语言代码)浏览:703 |
C语言程序设计教程(第三版)课后习题10.1 (Java代码)浏览:1436 |
【明明的随机数】 (C++代码)浏览:779 |
wu-理财计划 (C++代码)浏览:827 |
母牛的故事 (C语言代码)浏览:549 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:606 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:484 |
数列有序 (C语言代码)浏览:930 |