题目:有5个学生坐在一起,问第五个学生多少岁?

一个说他比第四个学生大2岁。问第4个学生岁数,他说比第3个学生大2岁。问第3个学生,又说比第2个学生大2岁。问第2个学生,说比第1个学生大2岁。最后问第1个学生,他说是10岁、请第5个学生多大。

解题思路:
想知道求第五个学生的年龄,就必须先知道第四个学生的年龄。要想求第4个学生的年龄必须先知道第3个学生的年龄,而第3个学生的年龄又取决于第2个学生的年龄,第2个学生的年龄取决第1个学生的年龄。而且每一人学生的年龄都比其前1个学生的年龄大2。显然,这是一个递归问题。如果age 是年龄函数,age (n) 代表第n个学生的年龄,可以用下面的式子表示上述关系。
age (5) =age (4) +2
age (4) =age (3) +2
age (3) =age (2) +2
age (2) =age (1) +2
age (1) =10
可以看到,当n>1时,求第n个学生的年龄的公式是相同的,即前一个学生的年龄加2,因此可以用同一个公式表示上述关系。

求解可分成两个阶段:第一阶段是“回溯”, 即将第n个学生的年龄表示为第(n一1) 个学生年龄的函数:age (n-1) +2.而第(n-1) 个学生的年龄仍然不知道,还要“回推”到第(n-2) 个学生的年龄······直到第1个学生的年龄。此时 age (1) 已知,不必再向前推了。然后开始第二阶段,采用递推方法,从第1个学生的已知年龄推算出第2个学生的年龄(12岁), 从第2个学生的年龄推算出第3个学生的年龄(14岁)。一直推算出第5个学生的年龄(18岁)为止。也就是说,一个递归的问题可以分为“回溯”和“递推”两个阶段。要经历若十步才能求出最的值。显而易见,如果要求递归过程不是无限制进行下去,必须具有一个结束递归过程的条件。例如,age (1) =10, 就是使递归
结束的条件。

编写程序:

#include<stdio.h>int age()
{int c;   //变量c用作存放函数的返回值的变量if(n==1)c=10;else c=age(n-1)+2;   //在age函数里调用age函数,即递归调用return (c);
}int main()
{printf("%d\n",age(5));  //输出第五个学生的年龄return 0;
}

运行结果为18.

C语言简单的递归程序相关推荐

  1. 编写程序C语言 用递归法求n,用C语言编写一个递归程序用来计算:1*2+2*3+3*4+.+(n-1)*n...

    用C语言编写一个递归程序用来计算:1*2+2*3+3*4+.+(n-1)*n以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧 ...

  2. java递归怎么写_什么是递归?用Java写一个简单的递归程序

    什么是递归?用Java写一个简单的递归程序 递归的定义 递归(recursion):以此类推是递归的基本思想,将规模大的问题转化为规模小的问题来解决. 递归的要素 自定义递归函数,并确定函数的基本功能 ...

  3. c语言折半查找递归程序,C语言数据结构中二分查找递归非递归实现并分析

    C语言数据结构中二分查找递归非递归实现并分析 前言: 二分查找在有序数列的查找过程中算法复杂度低,并且效率很高.因此较为受我们追捧.其实二分查找算法,是一个很经典的算法.但是呢,又容易写错.因为总是考 ...

  4. c语言简单的动画程序代码,发个C代码(简单动画演示)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /********************************/ /*TurboC 2.0下运行通过    */ /*简单的图像演示*/ /***** ...

  5. c 语言简单的聊天程序,写一个C-S程序,实现简单的聊天功能。(tcp/ip)

    client客户端处理器 #include #include #include #include #include #include #include #include int sockfd;/* 客 ...

  6. c语言字符串递归例子,c语言函数递归(简单的递归例子c语言)

    若在main函数中调用hanoi(3,'A','B','c')运行结果 void move(char getone,char . 分成三组: (一), 目的:将1号和2号从A移到B 调用函数:hano ...

  7. C语言程序设计递推递归n,软考程序员考点C语言程序设计之递归法

    下面希赛小编为大家整理的软考程序员考点C语言程序设计之递归法,希望能帮助学友们.具体内容如下: 递归法 递归法是设计和描述算法的一种有力的工具,由于它在复杂算法的描述中被经常采用,为此在进一步介绍其他 ...

  8. c语言最简单的程序编写,C语言简单程序编写.doc

    C语言简单程序编写 项目一 C语言简单程序编写 1.1学习目标 本项目达到的目标为: 掌握程序设计的基本思路 掌握C语言的基本结构 了解流程图的符号含义 掌握C语言的关键字 会设计和编写简单的C应用程 ...

  9. c语言简单的24点游戏,C语言解24点游戏程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 前几天在微博上看到24点的游戏,6 6 6 10.算了很久是在算不出来,最后我想我何不写一个小程序解决它?说做就做,我刚开始的想法很简单,就是列举4个数的 ...

最新文章

  1. 【风控场景】互利网上数字金融典型场景: 网络营销
  2. centos7离线安装tengine所需依赖
  3. php 正则mysql语句_MySQL正则表达式搜索 - mysql数据库栏目 - 自学php
  4. 编译安装php7.3
  5. 苹果新Mac Pro生产线将从美国转至中国 会更便宜吗?
  6. android 查找所有dialog_android 布局文件layout分组的简单使用
  7. (转)BlackRock:全球最大资管公司如何一步步倒戈人工智能?
  8. [Windows 故障]Ping通却无法连接网页 + Apple Mobile Device 自动停止
  9. 【ArcGIS教程01】前言
  10. JAVA关于实现科大讯飞语音合成功能
  11. java fadein_jQuery fadeIn()和fadeOut()方法
  12. 我的世界服务器信号下面是红,适用于服务器的红石抽奖机我的世界抽奖机电路图...
  13. lunch time food
  14. Python爬虫实战之爬淘宝商品并做数据分析
  15. 收好了!来自摩根大通的算法交易机器学习指南
  16. (附源码)springboot高校学生健康打卡系统的设计与实现 毕业设计 021009
  17. 测试opencl软件,OpenCL应用测试
  18. sin(1/x)的图像,第二类间断点,震荡间断点
  19. 本科学历的我拿到了腾讯的Offer、给大家推荐零基础初学小白C++学习路线,走过路过不要错,动动小手看看吧!!!
  20. 获取截止本月之前12个月的月份

热门文章

  1. [ubuntu] 查看端口占用情况
  2. 面向对象的常量类——枚举(Enum)
  3. Maven的配置、安装及测试可用
  4. 2021年专升本考试政策什么时候发布?发布前该准备什么?
  5. 支付宝怎么做风险控制?
  6. 图解 DDD 建模六个问题与六个步骤
  7. XManager Enterprise简介
  8. 运用wps在excel一串数字中提取中间某几位字符拼接编辑
  9. 路由器和猫,集线器,交换机的区别
  10. ZZULIOJ--1261: 小媛在努力