[20151010]从阶乘想到的.txt

[20151010]从阶乘想到的.txt

--这个是不久以前遇到的事情,路过一个给中学生的兴趣班,老师讲编程如何实现1到10的阶乘累加。
--实际上这个问题并不难对于学过编程的人来讲,我想很久以前读高中老师也给我们讲解过这个问题。我记得老师还叫我上黑板写代码。
--我还记得下课时老师留下问题如何显示1到100的阶乘累加,实际上原来的算法就不行了,结果已经溢出。

--如果换到现在我会选择使用bc来实现。

--写一个脚本实现1到X的阶乘累加:
--随手写一个bc脚本:(注实际阶乘的代码来自man bc手册)

define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}

define g(x)
{
    v=0;
    for (i=1;i<=x;i++)
    {
        v=v+f(i);
    }
    return v;
}
g(1000);

--顺便计算一下1到1000的阶乘累加:

$ time cat aa.txt|bc
....

real    0m9.554s
user    0m9.550s
sys     0m0.004s

--结果需要大约10秒。这个时候我想起来当时写的代码非常类似的,除了没有使用递归。实际上当时老师给了另外的思路,就是先算
--X的阶乘,然后在不断的除来累加。更改后的代码如下:

$ cat ax.txt
define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}

define g(x)
{
    v=0;
    a=f(x);
    for (i=x;i>=1;i--)
    {
        v+=a;
        a/=i;
    }
    return v;
}

g(1000);

$ time cat ax.txt|bc
40279005053122345768067055829218304493044109455152896641933464292007\
59023700825508498789380111228748403226643957277673191284838468927263\
98968790560901035018977865543415443376965144616549510538851077440410\
16581978207347558308207939650411138088491681076846747131716891318394\
82758974908036466987938461908525944177396717869145634721620931809562\
84720843607311204509397095907530114810381703803860648328656344389023\
07797564774862888681746680472485858774784093678446243617397742999118\
27532073023480165384946420013014323952797267455381787277085030908707\
45742249581124437084158031806471602854863650302741825130214652788342\
62128387017583390657265689010443241309517109572355085104736018270081\
76664478334500979289573868762717655541374071117476665123099806785398\
86786878262902584539118231519316835523885400137767203426696953126303\
29282822423534913463028008448006465049776475547382410225945312773007\
77775310631151387649525275970984453800464439975409258800869363179334\
21768424925084707414812932329166745886234137226923024813461900363225\
99946452493522794764716794743441163713920351740437121423299823949395\
45623233270769039159314433053699628563882650273461556233325433029434\
46674383336900484885947609695640139797208838438493998636482572950930\
77791964440615462408422804298527057377454368956529809230106268980768\
90711203175785101421818927982471990714520220291727074006887589803057\
02923813291544851703914211657597582497807598793035565731652297925769\
88654916845086709116386840244201837134102214334904094189742237793154\
01317123760884519266468022552657218203325644539610917924487108866748\
97251899281432897966817352381951694370184383299109654078410356489144\
96097727448032065520547484257131085876715457907964421551419900383259\
92326310206845282039558131111404730746868104260513228920636501228410\
04997271652977702547274337834459757112850838135183696311712170990224\
73992869769477285314047680203373559457470718994182065679361157280067\
19481311281095580123586794462594962441430219979368012738883931024129\
18463505832701613704464047394891693567824946365095976820092895872874\
83306734547239954921373656827788157415912067076521596246358718445543\
39227025068139536377423837689642266483656100701688393247498969109923\
90804658988479107678562550844858514512762455637677863067821690083222\
83440561338870911918871947918152819083688890815284572902151349165858\
65098894556135702731215416389951458945610799992135000761012487815006\
42979091198044736325729107144579768273776743716439557581557253878204\
64739117658285116731218202618879515662005685650334009224747947868473\
8621107994804323593105039052556442336528920420940313

real    0m0.167s
user    0m0.165s
sys     0m0.002s

--不到0.2秒。

--可以发现算法实际上还是非常重要的,看看现在的开发,我觉得许多编程人员丢掉了许多东西,现在的机器cpu主频越快,我在单位最
--快的机器测试也需要3秒到4秒。看看他们写的sql语句真的很失望,我曾经说过如果让我看其它代码,能发现的问题更多............

--补充不断相乘呢?

$ cat ay.txt
define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}

define g(x)
{
    v=0;
    a=f(1);
    for (i=2;i<=x;i++)
    {
        v+=a;
        a*=i;
    }
    return v;
}

g(1000);

$ time cat ay.txt|bc
real    0m0.046s
user    0m0.043s
sys     0m0.003s

--这样更快。

时间: 2024-09-01 20:12:20

[20151010]从阶乘想到的.txt的相关文章

[20150930]建立dg想到的....txt

[20150930]建立dg想到的....txt --前几天建立dataguard,这个项目主库是11g asm,而dataguard使用的是文件系统. --在dataguard的spfile文件中,配置了转换: SYS@xxxxdg> show parameter convert NAME                   TYPE    VALUE ---------------------- ------- ----------------------------------------

Robots.txt编写似雷区 稍有不慎“毒害甚深”(一)

每个人都有自己的隐私,网站也是这样,网站中也有不希望被蜘蛛看到的东西,比如会员密码等等,而想要遮挡住这部分隐私,一般情况下站长都会在第一时间想到Robots.txt.没错,Robots.txt文件的使用的确可以给蜘蛛指明道路,告诉它什么地方该去,什么地方不该去,也正是因为这点原因,很多站长都热衷于用Robots.txt,但是大家真的会用Robots.txt吗?对于它的编写规则大家又知道多少呢?本人不才,但对于这方面总归有点经验,在这分享出来,让大家有个参考,当然老鸟可以飞过了. Robots.t

[20151010]bash for循环.txt

[20151010]bash for循环.txt --同事要写一个shell要使用for循环.遇到一些问题做一些记录. --我一般会使用seq命令生成序列.我记得以前写过脚本: http://blog.itpub.net/267265/viewspace-758573/ --例子: #! /bin/bash for i in $(seq 10) do echo $i done #! /bin/bash for  i in `seq 10` do         echo $i done --类似

教你快速将多个TXT文档合并成一个

网上下载的文件常常会分割成好几个文件,阅读起来非常不便,本教程为大家介绍如何快速将多个txt文件合并. 文档合并成一个-快速合并word文档"> 同时选定需要合并的txt文档进行压缩 步骤1:首先选中需要合并的多个TXT文档,然后单击鼠标右键,在弹出的菜单中选中"Win-RAR-添加到压缩文件"命令,这时会出现"压缩文件名和参数"窗口,在"常规"标签页中对压缩文件进行命名,并将"压缩方式"下拉框中的"

站内优化三剑客:sitemap、404、Robots.txt

一个网站想要有一个好的排名就必须做好站内.站外的优化,相信大家一定看过很多关于站内或者站外优化的方法.秘笈.诀窍什么 的,有资深的SEO人员写的,有站长们自己的经验分享或者说是实战经验,今天跟大家说说自己对站内优化的一些看法跟理解吧. 我是刚刚接触站内优化的,因为之前一直是做站外优化的,所以对站内优化还不是很了解,今天主要跟打击分享的是站内优化过程中很多人会忽视的三个方面,即:sitemap.404页面.robots.txt.很多站长在做站内优化的时候很容易忽视这三个方面,觉得sitemap.4

网站优化之sitemap、404、Robots.txt

sitemap又称网站地图. 在专业术语上,sitemap就是一个页面,上面放置了网站上所有页面的链接,一个网站所有链接的容器,根据网站的结构.框架.内容,生成的导航网页文件.大多数人在网站上找不到自己所需要的信息时,可能会将网站地图作为一种补救措施,蜘蛛非常喜欢网站地图. 为什么要讲网站地图呢,把蜘蛛比作是一个人,当你到一个陌生的城市时,第一个想到的应该是去买一张这个城市的地图,不然很容易迷路的.同样的道理蜘蛛爬行你的网站时要是有一张地图引导他,他就不会迷路,而且要是你的地图结构合理且连续性强

sql-SQL Server 大容量txt文本导入问题

问题描述 SQL Server 大容量txt文本导入问题 本人毕业设计要处理大量数据,将txt文件导入SQL 中处理.没想到第一步就出了大问题.我采用过两种方法,都没有导入进去. 1.直接用导入导出工具,平面文件源,然后就显示"没有为此连接管理器定义列.",只有一列.而实际是3列. 2.bulk insert database from..... 结果显示:"消息 4866,级别 16,状态 1,第 1 行 大容量加载失败.数据文件中第 1 行的第 1 列太长.请验证是否正确

解析oui.txt文件,通过MAC前缀获取Organization

1.前言 OUI是指Organizationally unique identifier  (组织唯一标识符),签发给各类组织的唯一标识符.MAC地址共有6个字节48位组成,前3个字节体现了OUI,其表明了NIC的制造组织.通常情况下,该标识符是唯一的.详细介绍参考:http://standards.ieee.org/develop/regauth/oui/public.html.oui.txt文件中记录世界所有网卡的制造厂商,共有18859个.文件中记录mac的前三位与公司的对应关系.本文目地

silverlight动态读取txt文件/解析json数据/调用wcf示例

终于开始正式学习silverlight,虽然有点晚,但总算开始了,今天看了一下sdk,主要是想看下silverlight中如何动态调用数据,对于数据库的访问,sdk中的官方示例多用的是Ado.Net数据服务,方便到是方便,就是感觉Ado.Net数据服务返回的xml太啰嗦了,一点也不精简,数据通讯量太大(N多无用的标签导致客户端与服务端之间传输数据增加了不少),于是想到能否直接用wcf返回json格式, 何况sdk中提到silverlight中System.Json已经完成了对json的解析 经实