倒推年龄

【问题描述】

有n个人坐在一起。问第n个人几岁,他说比第n-1个人大2岁;问第n-1个人岁数,他说比第n-2个人大2岁;接着问第n-2个人……一直问到第一个人,第一个人说他今年m岁。请根据n和m的值计算出第n个人的岁数。

【分析】

问题的关键是要求第n个人的岁数,就必须先知道第n-1个人的岁数,且第n个人与第n-1个人之间年龄差总是2岁,由此可知是递归。那么,当知道第1个人的岁数后就可以通过不断加2推断出其后面的人的岁数,一直推断到第n个人。

列函数式如下:

age(n)=age(n-1)+2  (n>1)

age(n)=m        (n=1)

根据以上函数形式,定义递归函数age(),该函数需有两个参数:一共有多少人n和第1个人的年龄m,都是整型。

#include <stdio.h>

int age( int n, int m )   

{

int c;               

  if( n==1 )  c = m;

  else    c = age( n-1, m )+2;

  return  c ;

}

int main( void )

{

  int n,m;

  scanf("%d%d",&n,&m);

  printf("age(%d):%d\n",n,age(n,m));

  return 0;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容