黑马程序员技术交流社区

标题: 刚看到一个求1+2!+3!+4!+...+20!和的解决方法不用for嵌套。 [打印本页]

作者: hi虚无缥缈    时间: 2015-5-23 22:32
标题: 刚看到一个求1+2!+3!+4!+...+20!和的解决方法不用for嵌套。

1+2!+3!+...+20!
的和
  
1.
程序分析:此程序只是把累加变成了累乘。


2.
程序源代码:

main()
{  
float n,s=0,t=1;  
for(n=1;n<=20;n++)

{

t*=n;

s+=t;

}  
printf("1+2!+3!...+20!=%e\n",s);
}  

作者: Huylens    时间: 2015-5-23 22:49
这个解题思路很好!赞一个
作者: Rdxer    时间: 2015-5-23 23:03
可以完全不用循环!!!!  两个递归嵌套
作者: yi95392    时间: 2015-5-23 23:10
我写了两个For循环才弄出来,大神一个就可以,向大神学习!
作者: 挑战    时间: 2015-5-23 23:29
学习了。。。。
作者: Rdxer    时间: 2015-5-23 23:54
//  求阶乘
int jiecheng(int number)
{
    if(number==1)
        {
                return 1;
        }
        return jiecheng(number-1)*number;
}
// 伪循环
int weixunhuan(int layer)
{
        if(layer==2)
        {
                return jiecheng(2)+1;
        }
        return jiecheng(layer)+weixunhuan(layer-1);

}


// main 函数直接调用 weixunhuan 就好了
作者: fixer    时间: 2015-5-23 23:57
哇,哦,大神,
作者: 尹世伟    时间: 2015-5-23 23:57
搬走借鉴一下
作者: lyricdon    时间: 2015-5-23 23:59
用一个嵌套来写,代码会好看点
作者: lyricdon    时间: 2015-5-24 00:34
在main函数中用FOR循环求和,然后再定义一个求阶乘的递归函数
作者: 18612539120    时间: 2015-5-24 00:46
酷         
作者: XiaoBaoMi    时间: 2015-5-24 07:28
学习了楼主
作者: 洋柿子    时间: 2015-5-24 09:53
受教了。。。
作者: 天是蓝色的    时间: 2015-5-24 10:19
我一般用递归,效率不高,米这个很好
作者: 李闯    时间: 2015-5-24 11:27
牛!!刚试了一下,能行。 不过你定义变量是不是该定整型的
作者: x331275955    时间: 2015-5-24 17:46
Rdxer 发表于 2015-5-23 23:03
可以完全不用循环!!!!  两个递归嵌套

递归跟循环都差不多吧?
作者: x331275955    时间: 2015-5-24 17:49
真到位....我想很久,用了一个很笨的方法...
作者: aSmallStone    时间: 2015-5-24 21:48
整一个函数 不就行了
作者: zhangshuai    时间: 2015-5-24 22:07
这不求解了吗啊
作者: kansiliyundi    时间: 2015-5-24 22:49
真棒,学习了学习了
作者: ⒈苆都s.兲憶    时间: 2015-5-24 22:51
是用的递归吧!
作者: 蜡笔小炎    时间: 2015-5-25 01:33
Rdxer 发表于 2015-5-23 23:54
//  求阶乘
int jiecheng(int number)
{

虽然把简单问题搞复杂了,不过这递归的思路真挺牛的,我是不会想到




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2