求N的阶乘,对于阶乘,一般的递归运算的函数可以为
long factorial(int n){
if(n <= 1)
return 1;
else
return n factorial(n-1);
}而非递归的运算函数可以表示为
long factorial( int n )
{
int result = 1;
while( n > 1 ){
result = n;
n -= 1;
}
return result;
}菲波那锲数列的定义都知道吧,是这样子的
它的递归函数都会写
long
fibonacci( int n )
{
if( n <= 2 )
return 1;
else
return fibonacci( n - 1 ) + fibonacci( n - 2 );
}
但是它的递归函数实在效率太低,重复计算的值相当的多,所以我们需要改进,使用循环
long
fibonacci( int n )
{
long next_older_result = 0;
long previous_result = 1;
long result = 1;
if( 1 == n)
return 0;
else if( 2 == n)
return 1;
int i = 2;
while(i < n){
i++;
next_older_result = previous_result;
previous_result = result;
result = previous_result + next_older_result;
}
return result;
}如果你仔细观察一下,你会发现以上两个的递归调用都是函数所执行的最后一项任务。这个函数是尾部递归
尾部递归很容易也成非递归的形式。
#include<iostream>
#include<iomanip>
using namespace std;
int Fac(int n);
int main(){
int a,b,c;
cout<<"输入3个数:"<<endl;
cin>>a;
Fac(a);
int p=Fac(a)+Fac(b)+Fac(c);
cout<<p;
return 0;
}
int Fac(int n){
int i,sum=1;
for(i=1;i<=n;i++){
sum=i;}
return sum;
}
#include <iostreamh>
int fac(n)
{
int i,p;
p=n;
for(i=n;i>1;i=i-1)
{
p=p(n-1);
}
return p;
}
int main()
{
int a,b,c,sum;
cout<<"请分别输入三个整数:";
cin>>a;
cin>>b;
cin>>c;
sum=fac(a)+fac(b)+fac(c);
cout<<"a!+b!+c!="<<sum<<endl;
return 1;
}
以上就是关于fac(int n)是C++哪个库的(就是求阶乘的那个函数)全部的内容,包括:fac(int n)是C++哪个库的(就是求阶乘的那个函数)、求a!+b!+c!的值,用一个函数fac(n)求n!。a,b,c的值由主函数输入,最终得到的值通过指针在主函数中输出。、求a!+b!+c!的值,用一个函数fac(n)求n!。a,b,c的值由主函数输入,最终得到的值在主函数中输出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)