fac(int n)是C++哪个库的(就是求阶乘的那个函数)

fac(int n)是C++哪个库的(就是求阶乘的那个函数),第1张

阶乘n!和 Fibnoacci函数递归与非递归

求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的值由主函数输入,最终得到的值在主函数中输出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9337492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存