黑马程序员技术交流社区

标题: 一道关于递归的测试题 [打印本页]

作者: Ios_bawenlong    时间: 2015-4-15 01:00
标题: 一道关于递归的测试题
  1. /*

  2. 项目需求:

  3. A/B/C/D/E 5个人在某天夜里合伙去捕鱼,到凌晨时都疲惫不堪,于是各自找地方睡觉,第二天,A第一个醒来,他将鱼分成5份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分成5份,把多余的一条鱼扔掉,拿走自己的一份。C/D/E依次醒来,按同样的方法拿鱼。问他们合伙至少捕了多少条鱼?

  4. */
  5. #include <stdio.h>
  6. void  max ();//使用循环处理
  7. int fish(int nmb);//使用递归处理

  8. int main(int argc, const char * argv[]) {
  9.    
  10.     //循环
  11.      max();
  12.    
  13.     //定义变量接受返回值
  14.     int test = 0;
  15.    
  16.     //递归
  17.     test = fish(5);
  18.    
  19.     //输出结果
  20.     printf("%d\n",test);
  21.    
  22.     return 0;
  23. }


  24. int fish(int nmb){
  25.    
  26.     //定义变量记录捕鱼数
  27.     int nmbMin ;
  28.    
  29.     if (nmb == 0) {
  30.         
  31.         //递归结束值
  32.         nmbMin = 1;
  33.         
  34.     }else{
  35.         
  36.         //递归逆推
  37.         nmbMin = fish(nmb - 1) * 5 + 1;
  38.     }
  39.    
  40.     return nmbMin;
  41. }


  42. void  max (){
  43.    
  44.         //定义变量记录捕鱼数
  45.         int nmbMin = 1;
  46.             
  47.         for (int k = 0; k < 5; k++) {
  48.             
  49.             //总数
  50.             nmbMin = (5 * nmbMin +1);
  51.         }
  52.    
  53.         //输出
  54.         printf("%d\n",nmbMin);
  55. }
复制代码

作者: wslinke    时间: 2015-4-15 11:32
非常感谢 学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2