1到n阶乘算法的改进
之前用到过好几次了,但总是很长时间不用就会忘了,所以这次直接把它扔进来了。
之前总是喜欢用双层循环,其实一个单层循环足以,下面将用Python和C++两种语言进行展示
C++:
#include<iostream>
using namespace std;
int main()
{int sum=0,tmp; for(int i=1;i<=10;i++){tmp=1;for(int j=1;j<=i;j++)tmp*=j;sum+=tmp; } cout<<sum<<endl;sum=0;tmp=1;for(int i=1;i<=10;i++){tmp*=i;sum+=tmp; }cout<<sum<<endl;
}
// 算法思想的改变 阶乘
运行结果展示,结果相同:
Python:
#单层
sum=0
num=1
for i in range(1,11):num*=isum+=num
print("1到10的阶乘之和为:{}".format(sum))#双层
sum=0
for i in range(1,11):num=1for j in range(1,i+1):num*=j;sum+=num;
print("1到10的阶乘之和为:{}".format(sum))
运行结果展示,结果相同:
Python的那个for循环还真是有点不太适应,阶乘这个算法改进算是非常基础,但是好久不用就会常规思维写双层循环。