递归 PROBLEM1-2 ---ACM
最简单的递归问题,费波纳妾问题
递归的关键,找出边界条件; 要考虑包含所有可能情况
#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); }