巧算年龄

程序地址:http://www.cheemoedu.com/exercise/33

问题描述:

有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2个人大2岁。问第2个人,说比第1个人大2岁。问最后1个人,他说是10岁。
请问第5个人多大?

我的思路:

这个程序是一个需要不断回调原函数的典型,后面也有一个类似问题,这次换个写法;

定义一个计算年龄的函数,因为第一个人的年龄为10,后面的人依次加2,因此根据for循环按照循环的次数i计算第i个人的年龄;

我的代码:

#coding=utf-8
def olds (man):
    old=10
    for i in range(1,man):
        old+=2
        i+=1
    print "第%d个人的年龄为%d" % (man,old)
olds(1)
olds(2)
olds(3)
olds(4)
olds(5)

结果:

第1个人的年龄为10

第2个人的年龄为12

第3个人的年龄为14

第4个人的年龄为16

第5个人的年龄为18

示例代码:

def age(idx):
    return 10 if idx == 1 else age(idx-1) + 2
print age(5)

这个程序也很好理解的,就是通过判断传入的参数5依次得到age(4)+2而age(4)=age(3)+2, age(3)=age(2)+2  , age(2)=age(1)+2  ,age(1)=10,结果就是age(1)+2+2+2+2

时间: 2024-10-07 03:05:03

巧算年龄的相关文章

平方数的口算或巧算

看到电视里讲 999*999 的口算方法: 先去掉一个 9 , 得到 99, 然后后面写个8, 然后 8 前面有几个 9, 后面就写几个 0, 最后加个1, 得到 998001. 敏感的我一看就其中肯定是从计算法则中挖掘的规律.而且没有这么复杂.请看 999*999 =(1000-1)^2 = 1000*1000 - 2*1000 + 1 = (1000-2) * 1000 + 1*1 因此更简单的口诀是: 前面写个 998, 后面写个 001. 前面有几个数, 后面就有几个数. 不信, 你算算

蓝桥杯-标题:算年龄

标题:算年龄 英国数学家德摩根出生于19世纪初叶(即18xx年).他年少时便很有才华.一次有人问他的年龄,他回答说:"到了x的平方那年,我刚好是x岁". 请你计算一下,德摩根到底出生在哪一年.题中的年龄指的是周岁. 请填写表示他出生年份的四位数字,不要填写任何多余内容.#include<stdio.h>#include<math.h>int main(){ int age; int a,b,i,j;//X2-18xx=X; for(i=1;i<100;i+

JS根据身份证号码算年龄

如果把身份证号码传到页面上,在前端页面获取年龄就需要用到JS脚本了: function GetAge(identityCard) { var len = (identityCard + "").length; if (len == 0) { return 0; } else { if ((len != 15) && (len != 18))//身份证号码只能为15位或18位其它不合法 { return 0; } } var strBirthday = "&qu

Excel-计算年龄、工龄 datedif()

函数名称:DATEDIF 主要功能:计算返回两个日期参数的差值. 使用格式:=DATEDIF(date1,date2,"y").=DATEDIF(date1,date2,"m").=DATEDIF(date1,date2,"d") 参数说明:date1代表前面一个日期,date2代表后面一个日期:y(m.d)要求返回两个日期相差的年(月.天)数. 应用举例:在C23单元格中输入公式:=DATEDIF(A23,TODAY(),"y&quo

for语句之侦查队挑选人、猴子吃桃、5个小朋友算年龄、1 () 2 () 3 ()4 = 4;问括号里我要填 (- 或 +)问题

1.某侦察队接到一项紧急任务,要求在A.B.C.D.E.F六个队员中尽可能多地挑若干人,但有以下限制条件:侦察兵A和B两人中至少去一人: a+b>=1(由于每个队员有两种状态:去与不去,假设不去为0,去为1:把每个条件用等式表示出来,用for循环让每个条件都满足)A和D不能一起去: a+d<=1A.E和F三人中要派两人去: a+e+f == 2B和C都去或都不去: b+c !=1C和D两人中去一个: c+d==1若D不去,则E也不去. d+e==0 || d=1问应当让哪几个人去? for (

给定年月日,一个公式巧算星期几

来看公式: int CaculateWeekDay(int y,int m, int d) { if(m==1||m==2) { m+=12; y--; } int iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; return iWeek; } 这个公式叫基姆拉尔森公式. 该公式是从公元0年1月1日开始推导的 刚看挺复杂,我逐一分析: iWeek=   (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) %7 1. (d+2*m+3*

Python - 按天算年龄

问题:输入出生日期和当前的日期,输出活了多少天 举例:你是昨天出生的,那么输出就为1 分三种情况讨论: 1.年份和月份都相同 2.年份相同月份不同,先计算出生当天是当年的第几天,后计算当前为当年的第几天,相减 3.年份不同,还是先计算出生当天为当年的第几天,后计算当前为当年的第几天,做闰年判断,逐一相加 闰年为一下两种情况 1.能被400整除 2.能被4整除但不能被100整除 ............... 本题来自Udacity的计算机科学导论课程,用来做Python入门 Python语言兼具

c语言练习28——算年龄

#include<stdio.h> #include<stdlib.h> /*题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁.问第4个人岁数,他说比第3个人大2岁.问 第三个人,又说比第2人大两岁.问第2个人,说比第一个人大两岁.最后问第一个人,他说是10岁.请问第五个人多大?*/ int main(){ int i,age=10; for(i=0;i<4;i++) age=age+2; printf("第五个人岁数为:%d岁",age);

Python 趣味百题

趣味整数 1 不重复的3位数 -易 2 水仙花数 -易 3 完全数 -中 4 相亲数 -中 5 黑洞数 -中 6 勾股数 -易 7 自守数 -易 8 3位反序数 -中 趣味素数 1 素数 -中 2 孪生素数 -中 3 金蝉素数 -中 4 可逆素数 -中 5 回文素数 -中 6 平方回文素数 -中 7 梅森尼数 -中 8 哥德巴赫猜想 -中 9 等差素数数列 -中 趣味图形 1 回型矩阵 -中 2 九九乘法表 -易 3 杨辉三角 -易 数学问题 1 天平秤物 -难 2 黑色星期五 -易 3 存钱问