您的位置:首页 > 其它

递归与分治策略

2013-10-07 17:11 357 查看
1.递归

直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数。

1)阶乘函数

#include <iostream>

using namespace std;

int main()

{

int factorial(int n);

long n, m;

cin>>n;

m=factorial(n);

cout<<"n!="<<m<<endl;

return 0;

}

int factorial(int n)

{

if(n==0)

return 1;

else

return n*factorial(n-1);

}

2)Fibonacci数列

#include <iostream>

using namespace std;

int main()

{

//int factorial(int n);

int fibonacci(int n);

int n, m;

cin>>n;

//m=factorial(n);

m=fibonacci(n);

//cout<<"n!="<<m<<endl;

cout<<"fibonacci("<<n<<")="<<m<<endl;

return 0;

}

/****factorial function*****/

/*

int factorial(int n)

{

if(n==0)

return 1;

else

return n*factorial(n-1);

}*/

/**********fibonacci function*************/

int fibonacci(int n)

{

if(n<=1)

return 1;

else

return (fibonacci(n-1)+fibonacci(n-2));

}

3).Ackerman函数

当一个函数及它的变量由函数本身定义时,成这个函数是双递归函数。

long Ackerman(int n, int m)

{

if(n==1&&m==0)

return 2;

else if(n==0)

return 1;

else if(m==0)

return n+2;

else

return Ackerman(Ackerman(n-1,m),m-1);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: