c++-一个关于递归的小程序,理解不了其输出结果。。。。。

问题描述

一个关于递归的小程序,理解不了其输出结果。。。。。

一个c++递归的小程序,其输出结果理解不了,请问这个递归的基例是“cout<<endl;”这个吗?

 void f(char ch){
    if (('A' <= ch) && (ch <= 'H')){
        f(ch - 1);
        cout << ch;
    }
    else
        cout << endl;
}
int main(){
    f('C');
}

输出结果为:
(空一行)
ABC

解决方案

这个程序递归了3次。

f('A' - 1)的结果是输出回车,此时没有递归,理解吧。
然后
f('A' )的结果回车A,其中的回车是f('A' - 1)的结果。
然后
if('B')的结果是回车AB,其中回车A是f('A' )的结果
最后
if('C')的结果是回车ABC,其中回车AB是f('B' )的结果

解决方案二:

f('c')调用f('B')调用f('A')调用f('A'-1),
依次返回回车换行ABC

解决方案三:

不懂你的意思,就是简单的递归,什么基例。。。,你把函数全部迭代下就懂了

解决方案四:

就是把那个字符输出出来吧

解决方案五:

一楼的解释很详细?,

解决方案六:

是的,终止条件会执行:cout<<endl;
输出结果是由下面的顺序决定的:
f(ch - 1);
cout << ch;

解决方案七:

写一个输出的函数,这个函数调用自己本身就是递归函数的形式

解决方案八:

就是将字母A到H之间的字母从A开始一次输出

解决方案九:

你要理解递归的执行 就好像子程序一样 调用子程序的时候先执行完子程序 然后子程序再返回到主程序 再继续执行主程序
递归就是不断的调用它自己 直到最后一次调用时可以返回了 再倒着往上一层一层返回 所以你看到的输出结果是倒着的

时间: 2024-08-08 07:15:23

c++-一个关于递归的小程序,理解不了其输出结果。。。。。的相关文章

c++ win32编...-我写了一个win32项目的小程序 如何发给别人自动正常运行

问题描述 我写了一个win32项目的小程序 如何发给别人自动正常运行 把写好的程序打包为exe文件 但是发给朋友显示缺少库文件 然后在程序本身的文件夹中并没有库文件啊 百度一下很多说应该把debug版本改为release版本 改过之后依旧不行 本人新手刚接触win32程序 怎么办 解决方案 程序研究+写花了一天 调试运行在我电脑上都好好的 一发给别人就不行了 好尴尬

网络编程-用socket写了个linux聊天的小程序,一客户端一直输出接受消息成功 ==

问题描述 用socket写了个linux聊天的小程序,一客户端一直输出接受消息成功 == //服务器端代码 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<errno.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<mallo

聊聊程序员如何学习英语单词:写了一个记单词的小程序

背景: 关于英文对程序员的重要性,就不多说了! 英语的学习,有很多,今天也不聊多,只聊英语单词! 关于单词的记忆,找过很多方法,下载过很多软件. 如图(其它不好用的都卸载了): 上图算是我以前用过软件,注意,是以前哦~~~ 意思就是没有坚持下来~~~~ 随时间的推移,最后它们还是被我遗忘了~~~ 为什么???不能:坚持!坚持!坚持! 学习思考: 一直在找方法: 1:下载过联想记忆法.背文章记单词,词根,各种视频~~~ 2:连单词的数据库都网上下载了一份了,期望从数据库的直接记忆单词快些~~~ 通

Python实现的一个找零钱的小程序代码分享_python

Python写的一个按面值找零钱的程序,按照我们正常的思维逻辑从大面值到小面值的找零方法,人民币面值有100元,50元,20元,10元,5元,1元,5角,1角,而程序也相应的设置了这些面值.只需要调用函数时传入您想要找零的金额,程序会自动算各个面值的钱应该找多少张.如传入50元,则系统自动算出找零50元一张面值,如果传入60块7毛,则程序自动算出该找零50元一张,10元一张,5角一张,1角两张. # encoding=UTF-8   def zhaoqian(money):     loop=T

一个计算质数的小程序

程序 刚刚开始学C#,这是做的第一个很小很小的小程序:计算质数.做的比较烂,不要见笑! http://true5460.muicc.com/other/calPN.zip 以下是源码: using System; class test{ static void Main() { ulong i; while(true) { Console.Write("请输入要计算的质数(0退出):"); i=Convert.ToUInt64(Console.ReadLine()); if(i==0)

一个关于applet的小程序,大侠指点一下

问题描述 importjava.awt.Graphics;importjava.applet.Applet;classTextTestFrameextendsAppletimplementsRunnable//,DocumentListener{privateintminutes=0;Threadthread;publicvoidrun(){//TODO自动生成方法存根while(true){try{Thread.sleep(100);minutes++;}catch(InterruptedEx

一个简单php 抽奖小程序

然后随即生成一个0到最大数之间的一个数,通过循环查看它属于那个区间,返回该区间的key.  代码如下 复制代码 $prize = array(  1 => 3.5,  //3.5%机率  2 => 2.5,  3 => 6,  4 => 2,  5 => 42,  //42%机率  6 => 36,  7 => 2,  8 => 4,  9 => 2 ); //最后确认相加等于100 $prizeList = array(  1 => array

c#一个定时重启的小程序实现代码第1/2页_C#教程

原理我像大家都很清楚,这里只说.NET(c#实现).服务器每次启动或者重启,都是没登陆的.那意味着启动项里不只能做,我就考虑到使用Windows服务.Windows服务在系统加载时候就会启动所有服务,把程序写进里面应该没错了. 需要重启,那就要一个时间来效验,写法都有很多.我这里采用ini来存放. Time 记录要重启的时间,验证时间. Day 用来累加天数. 复制代码 代码如下: [Reboot] Time=02:02:01 Day=3 使用System.Timers.Timer循环验证时间(

微信小程序架构分析 (下)

[引自第九程序的博客]这一篇拖了一段时间,原因是实现一个可以运行微信小程序的 web 环境比我想象中要困难一些, 这一方面是因为微信对于代码进行了压缩混淆,另一方面主要原因是开发者工具内部逻辑调用比较复杂(难怪 bug 不少),完全无法拿出来重用. 小程序实时运行工具 wept 的开发已经基本完成了, 你可以通过我的代码对小程序的 web 环境实现有更全面的认识.下面我将介绍它的实现过程以及实时更新的原理. 小程序 web 服务实现 我在 wept 的开发中使用 koa 提供 web 服务,以及