2021-05-16习题10-2 递归求阶乘和 (15 分)

浙大版《C语言程序设计(第3版)》题目集

原题目作者

张高燕

单位

浙大城市学院

返回

习题10-2 递归求阶乘和 (15 分)

本题要求实现一个计算非负整数阶乘的简单函数,并利用该函数求 1!+2!+3!+...+n! 的值。

函数接口定义:

double fact( int n );
double factsum( int n );

函数fact应返回n的阶乘,建议用递归实现。函数factsum应返回 1!+2!+...+n! 的值。题目保证输入输出在双精度范围内。

裁判测试程序样例:

#include <stdio.h>

double fact( int n );
double factsum( int n );

int main()
{
    int n;

    scanf("%d",&n);
    printf("fact(%d) = %.0f\n", n, fact(n));
    printf("sum = %.0f\n", factsum(n));

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例1:

10

输出样例1:

fact(10) = 3628800
sum = 4037913

输入样例2:

0

输出样例2:

fact(0) = 1
sum = 0

下面是我的解答: 

double fact(int n)
{
	if (n > 1)
		return n * fact(n - 1);

	return 1;
}


double factsum(int n)
{
	double sum = 0;

	for (int i = 1; i <= n; i++)
	{
		sum += fact(i);
	}
	return sum;
}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《具体数学:计算机科学基础:第2版》是一本在大学中广泛使用的经典数学教科书.书中讲解了许多计算机科学中用到的数学知识及技巧,教你如何把一个实际问题一步步演化为数学模型,然后通过计算机解决它,特别着墨于算法析方面.其主要内容涉及和式、整值函数、数论、二项式系数、特殊的数、生成函数、离散概率、渐近式等,都是编程所必备的知识.另外,本书包括了六大类500 多道习题,并给出了所有习题的解答,有助读者加深书中内容的理解 [1] .   《具体数学:计算机科学基础:第2版》面向从事计算机科学、计算数学、计算技术诸方面工作的人员,以及高等院校相关专业的师生. 作者: ronald l. graham(葛立恒):著名数学家,美国加州大学圣迭戈计算机与信息科学专业教席(jacobs endowed chair),at&t实验室研究中心荣誉首席科学家,美国数学学会前任主席。   donald e. knuth(高德纳):著名计算机科学家,算法与程序设计技术的先驱者、斯坦福大学计算机系荣休教授、计算机排版系统tex和metafont字体系统的发明人,因诸多成就以及大量富于创造力和具有深远影响的著作(19部书,160篇论文)而誉满全球。   oren patashnik:著名计算机科学家,bibtex的创始人之一,是位于拉荷亚的通信研究中心的研究员。他1976年毕业于耶鲁大学,后来在斯坦福大学师从knuth,1980年就职于贝尔实验室。1985年与leslie lamport合作创建了bibtex(latex的一种工具,用于管理文献、产生文献目录)。 目录: 《具体数学:计算机科学基础:第2版》   第1章  递归问题  1   1.1  河内塔  1   1.2  平面上的直线  4   1.3  约瑟夫问题  7   习题  14   第2章  和式  18   2.1  记号  18   2.2  和式和递归式 21   2.3  和式的处理  25   2.4  多重和式  28   2.5  一般性的方法 35   2.6  有限微积和 无限微积 39   2.7  无限和式  47   习题  52   第3章  整值函数 56   3.1  底和顶 56   3.2  底和顶的应用  58   3.3  底和顶的递归式 66   3.4  mod:二元运算 68 3.5 底和顶的和式 72 习题79 第4章数论 85 4.1整除性 85 4.2素数 88 4.3素数的例子 89 4.4阶乘的因子93 4.5互素 96 4.6mod:同余关系 103 4.7独立剩余105 4.8进一步的应用 107 4.9ψ函数和μ函数110 习题119 第5章二项式系数 126 5.1基本恒等式126 5.2基本练习143 5.3处理的技巧154 5.4生成函数164 5.5超几何函数170 5.6超几何变换 180 5.7部超几何和式186 5.8机械和法 191 习题 202 第6章特殊的数 214 6.1斯特林数 214 6.2欧拉数 223 6.3调和数 228 6.4调和和法 233 6.5伯努利数 237 6.6斐波那契数244 6.7连项式 252 习题259 第7章生成函数268 7.1多米诺理论与换零钱 268 7.2基本策略 277 7.3解递归式282 7.4特殊的生成函数 294 7.5卷积 296 7.6指数生成函数 305 7.7狄利克雷生成函数 310 习题312 第8章离散概率 320 8.1定义 320 8.2均值和方差 325 8.3概率生成函数 331 8.4抛掷硬币 336 8.5散列法 344 习题 357 第9章渐近式 367 9.1量的等级 368 9.2大O记号370 9.3O运算规则 376 9.4两个渐近技巧 388 9.5欧拉和公式393 9.6最后的和法398 习题410
第1章 编程语言与Java基础知识 1 1.1 编程语言基础知识 1 1.1.1 程序、软件与应用程序 1 1.1.2 编程语言的种类 2 1.1.3 低级语言 2 1.1.4 高级语言 3 1.1.5 程序是如何执行的 3 1.2 Java基础知识 6 1.2.1 Java平台 6 1.2.2 Java语言的版本 6 1.2.3 Java编程语言的特点 8 1.3 Java语言的开发环境 8 1.4 搭建Java开发环境 9 1.4.1 安装与设置JDK 9 1.4.2 安装与启动Eclipse IDE 12 习题 15 第2章 构建Java应用程序 16 2.1 如何构建应用程序 16 2.1.1 如何编写程序代码 16 2.1.2 程序设计的基础 17 2.1.3 算法 18 2.2 构建Java应用程序 19 2.2.1 构建第一个Java程序 19 2.2.2 使用Eclipse IDE构建第2个Java程序 21 2.2.3 使用书的范例项目 24 2.3 Java程序结构与基本输出 24 2.4 Eclipse IDE的项目管理与使用 26 2.4.1 切换工作空间 26 2.4.2 Eclipse IDE的项目管理 27 2.4.3 Eclipse IDE的基本使用 29 2.5 良好的Java程序代码编写风格 32 2.5.1 程序语句 32 2.5.2 程序块 33 2.5.3 程序注释 33 2.5.4 避免太长的程序代码 33 2.5.5 程序代码缩排 33 学习评估 34 第3章 变量、数据类型与运算符 35 3.1 变量与数据类型基础 35 3.2 变量的命名与声明 35 3.2.1 Java的命名语法 36 3.2.2 变量的声明 37 3.2.3 赋值语句 38 3.2.4 常量的声明与使用 40 3.3 Java的数据类型 40 3.3.1 整数类型 41 3.3.2 浮点型 42 3.3.3 布尔型 43 3.3.4 字符型 43 3.4 Java的表达式 45 3.4.1 运算符的优先级 46 3.4.2 算术运算符 46 3.4.3 递增和递减运算 48 3.4.4 关系与条件运算符 49 3.4.5 位运算符 51 3.4.6 指定运算符 54 3.5 数据类型的转换 54 3.5.1 宽化数据类型转换 54 3.5.2 窄化数据类型转换与类型转换运算符 56 习题 57 第4章 流程控制结构 58 4.1 流程控制与UML活动图 58 4.1.1 UML活动图 58 4.1.2 流程控制的种类 59 4.2 程序块与控制台基本输入 60 4.2.1 程序块 60 4.2.2 控制台的基本输入 62 4.3 条件控制语句 63 4.3.1 if条件语句 63 4.3.2 if/else条件语句 64 4.3.3 switch条件语句 65 4.3.4 ?:条件运算符 68 4.4 循环控制语句 69 4.4.1 for循环语句 69 4.4.2 前测式的while循环语句 71 4.4.3 后测试的do/while循环语句 72 4.4.4 break和continue关键字 73 4.5 嵌套循环 74 习题 76 第5章 类方法 78 5.1 过程与函数基础 78 5.2 类方法 78 5.2.1 创建Java类方法 79 5.2.2 类方法的参数传递 81 5.2.3 类方法的返回值 83 5.2.4 值传递与引用传递 84 5.3 类变量和变量作用域 86 5.3.1 Java的类变量 86 5.3.2 Java的变量作用域 87 5.4 递归程序设计 89 5.4.1 递归方法概述 89 5.4.2 递归的阶乘函数 89 5.5 Math类及其类方法 91 5.5.1 随机数、最大和最小值 91 5.5.2 Math类的数学常量和方法 92

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值