Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60467
  • 博文数量: 34
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 267
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-29 13:17
文章分类

全部博文(34)

文章存档

2014年(1)

2013年(33)

我的朋友

分类: C/C++

2013-08-29 15:56:54


下面代码,重点学习递归及如何使用宏定义做条件编译

  1. #include <iostream>

  2. /* run this program using the console pauser or add your own getch, system("pause") or input loop */
  3. using namespace std;
  4. #define RECURSION 0
  5. #define NO_RECURSION 1

  6. //=================递归版本=============//
  7. #if RECURSION
  8. /*int f(int m, int n)
  9. {
  10.     if(1 == m)
  11.     {
  12.         return n;
  13.     }
  14.     if(1 == n)
  15.     {
  16.         return m;
  17.     }
  18.     return f(m-1,n)+f(m,n-1)
  19. }*/
  20. #endif

  21. #if NO_RECURSION
  22. //================非递归版本=================
  23. int f(int m, int n)
  24. {
  25.     int a[100][100];
  26.     for (int i=0; i!=m; i++)
  27.     {
  28.         a[i][0] = i + 1;
  29.     }
  30.     for (int i=0; i!=n; i++)
  31.     {
  32.         a[0][i] = i + 1;
  33.     }
  34.     for (int i=1; i!=m; i++)
  35.     {
  36.         for (int j=1; j!=n; j++)
  37.         {
  38.             a[i][j] = a[i-1][j] + a[i][j-1];
  39.         }
  40.     }
  41.     
  42.     return a[m-1][n-1];
  43. }
  44. #endif

  45. int main(int argc, char** argv) {
  46.     cout << f(5,5) << endl;
  47.     return 0;
  48. }

阅读(911) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~