利用Python/R语言分别解决金字塔数求和问题
作者:铭记yu心 发布时间:2021-09-06 06:29:14
前言
此专栏为python与R语言对比学习的文章;以通俗易懂的小实验,带领大家深入浅出的理解两种语言的基本语法,并用以实际场景!感谢大家的关注,希望对大家有所帮助。
“博观而约取,厚积而薄发!”谨以此言,望诸君共勉
本文将前两个小实验整理拼凑再了一起 ;分别是“前N阶乘求和、金字塔数求和”。具体的项目介绍见下文。
1、前N阶乘求和
阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。
n!=1∗2∗3∗...∗(n−1)∗n
或者可以使用递归方式定义:
对其前N项阶乘求和即是sum(1!+2!+3!+...+n!),有了以上的理论基础,我们一起看看图解,加强一下理解 !
1.1 图解问题
如图,如果要输出每一个值 ,可以嵌入循环的思想,每一次将前一个值进行乘法运算即可!
1.2 算法流程
在此可以看到 ,我们需要加以人工控制需要算前多少项。在循环体内,这是对阶乘数的累加和赋值。
1.3 代码实现
1.3.1 python代码实现
n = int(input("n = "))
s = 0
t = 1
for i in range(1,n+1):
t*=i
s+=t
print ("前{}阶乘的和是:{}" .format(n,s))
1.3.2 R语言代码实现
factorial <- function(n){
n <<- as.integer(readline("请输入需要阶乘个数(从 1 开始):"))
fac = 1
ans = 0
for (i in 1:n) {
fac = fac * i
ans = ans + fac
}
return(ans)
}
test_3 <- function(){
print("前n阶乘之和为:")
factorial(n)
}
test_3()
1.4实验小结
这个实验核心的点是循环的使用;
至于R代码部分均使用函数的形式进行包装方便理解;函数内部采用互动的方式,便于拓展使用。有需要了解的留言或私信。
2、金字塔数求和运算
此处的金字塔是真金字塔;就按简单的金字塔形状的数字:
求s=a+aa+aa+aaa+aa...a的值,其中 a 是一个数字。例如:
2+22+222+2222+22222
(此时共 有 5 个数相加),几个数相加由键盘控制。
2.1 图解问题
通过对每一层金字塔数的拆解,即可得到如下的通项公式:
这样问题不久又解决了吗?与上面的前n项阶乘求和一样,使用循环求出每一层数,然后求和。
2.2 算法流程
与上面实验基本没有差异;主要是循环体的算法不同而已。此处不做讲解了。
2.3 代码实现
2.3.1 python代码
a = int(input("请输入需要a的值:"))
n = int(input("请输入需要n的值:"))
Fn = 0
pyr = []
for i in range(n):
Fn = Fn + a
a = a*10
pyr.append(Fn)
print(Fn)
print("前{}个数的和为:{}".format(n, sum(pyr)))
2.3.2 R语言代码实现
sum_pyr <- function(){
a <- as.integer(readline("请输入a的值:"))
n <- as.integer(readline("请输入n的值:"))
Fn <- 0
pyr <- c()
for (i in 1:n) {
Fn <- Fn + a
a <- a * 10
pyr[i] <- Fn
print(Fn)
}
ans <<- sum(pyr)
}
test_4 <- function(){
print("金字塔为:")
sum_pyr()
print("求和结果为:")
ans
}
test_4()
2.4 实验小结
这个实验核心的点是循环的使用;
至于R代码部分均使用函数的形式进行包装方便理解;函数内部采用互动的方式,便于拓展使用。有需要了解的留言或私信。
来源:https://blog.csdn.net/weixin_42873544/article/details/123682208
猜你喜欢
- 概述对于中小体量的项目而言,联表查询是再常见不过的操作了,尤其是在做报表的时候。然而校对数据的时候,您发现坑了吗?本篇文章就 mysql 常
- 问题描述使用pandas库的read_excel()方法读取外部excel文件报错, 截图如下好像是缺少了什么方法的样子问题分析分析个啥,
- Mysql数据库是一个多用户,多线程的关系型数据库,是一个客户机/服务器结构的应用程序。它是对个人用户和商业用户是免费的.Mysql数据库具
- 我们在使用ASP 内置的ADO组件进行数据库编程时,通常是在脚本的开头打开一个连接,并在脚本的最后关闭它,但是就较大脚本而言,在多数情况下连
- 最近做一个的GUI,因为调用了os模块里的system方法,使用pyinstaller打包的时候选择不输出系统命令弹框,程序无法运行,要求要
- tell()方法返回的文件内的文件读/写指针的当前位置。语法以下是tell()方法的语法:fileObject.tell()参数
- 第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar第二步:导入下载的JDB
- 1.offsetTop :当前对象到其上级层顶部的距离.不能对其进行赋值.设置对象到页面顶部
- 查询mysql的操作信息show status -- 显示全部mysql操作信息show status like "com_ins
- 前言今天我看了一下自己的文件夹,发现了自己写了许多似乎很无聊的代码。于是乎,一个想法油然而生:“生活已经很无聊了,不如再无聊一点叭”。说干就
- 技术背景对于一些连续运行或者长时间运行的Python程序而言,如服务器的后端,或者是长时间运行的科学计算程序。当我们涉及到一些中途退出的操作
- 一、什么是Python类?python中的类是创建特定对象的蓝图。它使您可以以特定方式构建软件。问题来了,怎么办?类允许我们以一种易于重用的
- 根据国务院文件,5.19-5.21为全国哀悼日,在此期间,全国和各驻外机构下半旗志哀,停止公共娱乐活动,外交部和我国驻外使领馆设立吊唁簿。5
- 在默认情况下,MySQL搜索不区分大小写(但某些字符集始终区分大小写,如czech)。这意味着,如果你使用col_name LIKE
- 前言之前使用 vue2.x + webpack3.x 撸了一个 vue 单页脚手架vue 版 spa 脚手架 有兴趣的同学可以看下,内附详细
- 1、字典中的键存在时,可以通过字典名+下标的方式访问字典中改键对应的值,若键不存在则会抛出异常。如果想直接向字典中添加元素可以直接用字典名+
- 我页面上有控制了只能输入数字的控件,禁止了输入法切换的,但是搜狗的云输入却控制不了,有没有办法在页面里面禁止它运行啊?发现这玩意儿真的很讨厌
- 异常是指因为程序出现了错误而在正常控制流以外采取的行动,其分为两个阶段,第一阶段是引发异常的错误,当系统检测到错误并且意识到异常条件,解释器
- 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形
- 本文实例讲述了Python变量、数据类型、数据类型转换相关函数用法。分享给大家供大家参考,具体如下:python变量的使用不需要进行类型声明