7.6 递归求学生年龄

news2025/1/23 13:02:05

有5个学生坐在一起,问第五个学生多少岁,他说比第四个学生大两岁。问第四个学生的岁数,他说比第三个学生大2岁。问第三个学生,又说比第二个学生大2岁。问第二个学生,说比第一个学生大2岁。最后问第一个学生,他说是10岁。请问第五个学生多大:

解题思路:

书上的答案: 

C语言: 

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

C++:
 

#include<iostream>
using namespace std;

int age(int n) //求年龄的递归函数 
{
    if(n == 1)
    {
        return 10;
    }
    else
    {
        return age(n-1) + 2;
    } 
}

int main()
{
    cout << "NO.5, age: " << age(5) << endl;  //输出第五个学生的年龄
    return 0;
}

JAVA:

public class StudentAge {
    
    public static int age(int n) {
        if(n == 1) {
            return 10;
        } else {
            return age(n-1) + 2;
        }
    }

    public static void main(String[] args) {
        System.out.println("NO.5, age: " + age(5));  // 输出第五个学生的年龄
    }
}

运行结果:

程序分析:

总结:

1.犯了什么错?

1.不小心把return语句写入else括号中

2.学到了什么

从这道题和我们的讨论中,我们可以学到以下几点:

1. **递归的概念**:递归是函数自己调用自己的过程。在这个例子中,我们用递归解决了一个连续年龄的问题。当正确使用时,递归可以简化某些问题的解决方法。

2. **基线条件的重要性**:在递归中,基线条件(或称为递归的停止条件)是至关重要的,避免函数无限制地调用自己。在这个例子中,当`n==1`时,我们有一个基线条件返回年龄为10。

3. **函数返回的重要性**:所有的函数,尤其是带有返回类型的函数,必须确保在所有的执行路径中都有返回值。遗漏返回值可能导致编译时或运行时错误。

4. **从一个语言到另一个语言的转换**:我们已经看到如何将一个问题的解决方案从C转换为C++,再转换为Java。虽然语法和某些细节可能会有所不同,但核心的算法和逻辑思维是可以跨语言应用的。

5. **问题诊断和调试技能**:当面对一个错误或未知的输出时,有必要仔细检查代码,找出问题的根源,并学会如何修复它。

6. **测试的重要性**:验证函数或程序的输出,确保它们符合预期,是软件开发中的重要步骤。在这个例子中,经过测试我们知道程序返回了预期的结果。

通过这种类型的编程练习和解决问题的经验,我们可以增强自己的编程技能、问题解决能力和调试技巧。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/965900.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity中Shader的遮罩的实现

文章目录 前言一、遮罩效果的实现主要是使用对应的纹理实现的&#xff0c;在属性中暴露对应的遮罩纹理&#xff0c;对其进行采样后&#xff0c;最后相乘输出即可二、如果需要像和主要纹理一样流动&#xff0c;则需要使用和_Time篇一样的方法实现流动即可 前言 Unity中Shader的…

TBOX开发需求说明

TBOX功能需求&#xff1a; 支持4G上网功能&#xff0c;可获取外网IP&#xff0c;可和云端平台连通支持路由功能&#xff0c;支持计算平台、网关和云端平台建立网络连接支持USB转网口&#xff0c;智能座舱会通过USB连接AG35建立网络连接&#xff08;类似IVI通过USB口连接TBOX&a…

AAC处理码流分析工具(三十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

安装kali虚拟机镜像的坑

1.0 安装虚拟机镜像成功之后&#xff0c;只有光标&#xff0c;没有界面 在VMware上安装kali linux环境时&#xff0c;根据提示操作完成后&#xff0c;开启虚拟机&#xff0c;屏幕黑屏&#xff0c;左上角有一个光标在闪&#xff0c;一直开不了机。 出现问题的原因&#xff0c;…

Data truncation: Out of range value for column ‘id‘ at row 1

错误信息&#xff1a;Data truncation: Out of range value for column id at row 1 数据截断&#xff1a;第1行“id”列的值超出范围 很多人会回复&#xff1a;数据库 类型由int改为 bigInt 我看了表结构 可以放的下的。 是 bigint(20) 没有问题啊。 默认的 bigint 类型…

FPGA原理与结构——FIFO IP核的使用与测试

一、前言 本文介绍FIFO Generator v13.2 IP核的具体使用与例化&#xff0c;在学习一个IP核的使用之前&#xff0c;首先需要对于IP核的具体参数和原理有一个基本的了解&#xff0c;具体可以参考&#xff1a; FPGA原理与结构——FIFO IP核原理学习https://blog.csdn.net/apple_5…

GEE14:提取每年的GPP最大值

获取GPP最大值 1. 数据介绍2. JavaScript代码 最近学习了关于获取每年GPP最大值的DOY&#xff08;day of year&#xff09;的方法&#xff1a; 1. 数据介绍 MOD17A2H v006&#xff1a; The MOD17A2H Version 6 Gross Primary Productivity (GPP) product is a cumulative 8-d…

soundtouch库的编译与使用

源码下载 https://gitlab.com/soundtouch/soundtouch/-/archive/2.1.2/soundtouch-2.1.2.tar.bz2 SDK配置 使用vs逐个打开source下指定的三个项目文件&#xff0c;修改SDK&#xff0c;因为可能库中使用的是8.0&#xff0c;你使用的10.0 编译 打开vs&#xff0c;打开终端&am…

图像处理简介

目录 基本术语 1 .图像(image) 1.1 像素(Pixel) 1.2 颜色深度&#xff08;Color Depth&#xff09; 1.3 分辨率&#xff08;Resolution&#xff09; 1.4 像素宽高比&#xff08;Pixel Aspect Ratio&#xff09; 1.5 帧率(FPS) 1.6 码率&#xff08;BR&#xff09; 1. …

基于Stable Diffusion的AIGC服饰穿搭实践

本文主要介绍了基于Stable Diffusion技术的虚拟穿搭试衣的研究探索工作。文章展示了使用LoRA、ControlNet、Inpainting、SAM等工具的方法和处理流程&#xff0c;并陈述了部分目前的实践结果。通过阅读这篇文章&#xff0c;读者可以了解到如何运用Stable Diffusion进行实际操作&…

ScreenToGif-动图制作软件实用操作

ScreenToGif官网&#xff1a;ScreenToGif ⭕第一步&#xff1a;启动页面 ⭕第二步&#xff1a;选项 &#x1f95d;录像机-捕获频率选择手动-播放延迟1000ms(可以任意) ⭕第三步&#xff1a;录像机开始录屏 &#x1f95d;我们调整录屏的大小后&#xff0c;打开画图&#xff0c…

HK1 RBOX X4,Vontar X4,S905 X4 刷 ATV

准备工作 需要HK1 RBOX X4一个&#xff08;内存版本不限 通刷&#xff09;&#xff0c;机顶盒电源&#xff0c;USB双公线一条&#xff08;可以使用两个usb数据线剪开后相同颜色对接使用&#xff0c;最好使用电烙铁焊接一下更稳定&#xff09;&#xff0c;安装 INTEL CPU 运行 w…

Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN)

Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN) 来源&#xff1a; KDD’2023Google Research 文章目录 Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN)长尾问题分析CDNItem Memorization and General…

【算法】leetcode 105 从前序与中序遍历序列构造二叉树

题目 输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 示例 1: Input: preorder [3,9,20,15,7], inorder [9,3,15,20,7] Output: [3,9,20,null,null,15,7]示例 2: Input: pr…

可控生成之GLIGEN原理

🤗关注公众号 funNLPer 快乐白嫖🤗 论文:GLIGEN: Open-Set Grounded Text-to-Image Generation 代码:gligen/GLIGEN 项目地址:GLIGEN demo地址:gligen demo 文章目录 1. 动机2. 模型结构及原理2.1 输入处理2.1.1 Caption Tokens2.1.2 Grounding Tokens2.2 Gated Sel…

应急三维电子沙盘数字孪生系统

一、简介应急三维电子沙盘数字孪生系统是一种基于虚拟现实技术和数字孪生技术的应急管理工具。它通过将真实世界的地理环境与虚拟世界的模拟环境相结合&#xff0c;实现了对应急场景的模拟、分析和决策支持。该系统主要由三维电子沙盘和数字孪生模型两部分组成。三维电子沙盘是…

ROS-5.自定义topic消息格式

自定义topic消息格式 1. 定义消息1.1. 定义msg文件1.2. 在package.xml中添加功能包依赖1.3. 在CMakeList.txt添加编译选项1.4. 编译 2.定义发布者和订阅者2.1 定义发布者2.2. 定义订阅者2.3. 修改CMakeList.txt2.4 编译 3. 使用消息3.1 启动ros主程序3.2. 启动发布者3.3 启动订…

处理时延降低24倍,联通云粒数据引擎优化实践

*作者&#xff1a;郑扬勇&#xff0c;云粒星河数据中台产品负责人 云粒智慧科技有限公司成立于 2018 年 6 月&#xff0c;是中国联通集团混改以来成立的首家合资公司&#xff0c;是中国智慧城市数智化建设者。一直以来&#xff0c;云粒智慧以数字化、智能化、集约化产品为核心&…

[杂谈]-2023年实现M2M的技术有哪些?

2023年实现M2M的技术有哪些&#xff1f; 文章目录 2023年实现M2M的技术有哪些&#xff1f;1、寻找连接2、M2M与IoT3、流行的 M2M 协议 在当今的数字世界中&#xff0c;机器对机器 (M2M) 正在迅速成为标准。 M2M 包括使联网设备能够交换数据或信息的任何技术。 它可以是有线或无…

关于已经安装了TorchCRF,导入时却提示“ModuleNotFoundError: No module named ‘torchcrf‘”的解决办法

应用python时&#xff0c;想导入torchcrf库 from torchcrf import CRF 但系统提示&#xff1a;ModuleNotFoundError: No module named torchcrf 在命令提示符里输入“pip list”检查已安装库&#xff0c;发现torchcrf已经安装 搞了半天&#xff0c;发现是大小写的问题&#x…