递归与分治策略
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);
}
直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数。
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);
}
相关文章推荐
- 递归与分治策略(3)
- 分治策略结合递归思想求最大子序列和
- 递归和分治策略
- 递归与分治策略
- 递归分治策略——Java之棋盘覆盖问题解决
- 分治策略、动态规划、贪婪选择以及递归之间的关系与区别(二)
- 递归与分治策略(1)
- 递归与分治策略之快速排序
- 递归与分治策略-2.8快速排序
- 函数的递归调用与分治策略
- 递归与分治策略-2.9.1线性时间选择(随机划分基准)(第k小问题)
- 递归与分治策略之二分搜索算法
- [置顶] 递归与分治策略-2.7归并排序及其优化总结
- [置顶] 递归与分治策略-2.9.2线性时间选择(取中位数的中位数基准)(第k小问题)
- 递归与分治策略之棋盘覆盖问题
- 递归和分治策略之排列问题
- 【计算机算法分析】递归与分治策略——二分搜索与集合划分问题
- 递归与分治策略——集合划分问题,众数问题
- 期末复习——递归与分治策略
- 递归与分治策略之线性时间选择(随机划分线性选择)