最简单的递归问题,费波纳妾问题
递归的关键,找出边界条件; 要考虑包含所有可能情况
#include <cstdlib>
#include <iostream>
/* recursion
* PROBLEM 1
* the simplest fib
*/
using namespace std;
int fib(int x)
{
if(1==x||2==x)
{
return 1;
}
return fib(x-1)+fib(x-2);
}
int main(int argc, char *argv[])
{
int n;
scanf("%d",&n);
printf("the fib is : %d \n", fib(n));
system("PAUSE");
return EXIT_SUCCESS;
}
第二个简单问题: 二叉树:
#include <cstdlib>
#include <iostream>
/* recursion
* PROBLEM 2 binary tree
*
*/
using namespace std;
int findCommon(int , int ); //declaration
int main(int argc, char *argv[])
{
int m, n;
scanf("%d%d",&m,&n);
printf("%d",findCommon(m,n));
system("PAUSE");
return EXIT_SUCCESS;
}
int findCommon(int x, int y)
{
if(x==y) return x;
if(x>y) return findCommon(x/2,y);
else if(x<y) return findCommon(x,y/2);
}