把一下程序中的print()函数改写成
源代码:
#include <iostream>
using namespace std;
void print( int w )
{
for( int i = ; i <= w ; i++ )
{ for( int j = ; j <= i ; j++ )
cout << i << " " ;
cout << endl ;
}
}
int main()
{
print( ) ;
}
错误代码:
//错误代码
#include<iostream>
using namespace std;
int print(int w)
{
if (w == )
{
for (int i = ; i <= w; i++)
{
cout <<w << " ";
}
cout << endl;
return ;
}
for (int i = ; i <= print(w - ); i++) //这里有错
//因为print(w-1)在for循环的条件表达式里,所以每走一次循环都会执行一次
{
cout << w << " ";
}
cout << endl;
return w + ;
}
int main()
{
int a;
cin >> a;
print(a);
system("pause");
}

然后输出了一堆莫名奇妙的东西。
经过一番调试后,找出了问题所在,改写了代码,把递归的代码部分放到循环外面,问题解决。
正确代码:
#include<iostream>
using namespace std;
int print(int w)
{
if (w == )
{
for (int i = ; i <= w; i++)
{
cout <<w << " ";
}
cout << endl;
return w+;
}
int a = print(w - );
//把print(w-1)放到循环外面,并用变量a来传递返回值
for (int i = ; i <= a; i++)
{
cout << w << " ";
}
cout << endl;
return w + ;
}
int main()
{
int a;
cin >> a;
print(a);
system("pause");
}
正确输出:
附上答案里面的代码(比较简洁)
#include<iostream>
using namespace std;
void print(int w)
{
int i;
if( w )
{
print( w- );
for( i=; i<=w; i++ )
cout << w << " ";
cout << endl;
}
}
void main()
{
print( );
}
把一下程序中的print()函数改写成的更多相关文章
- MEX程序中的mexFunction函数【转】
与C中的main函数一样,MEX程序中的开始函数为mexFunction.默认变量参数是: void mexFunction(int nlhs, mxArray *plhs[], int nrhs, ...
- 《从零开始学Swift》学习笔记(Day 7)——Swift 2.0中的print函数几种重载形式
原创文章,欢迎转载.转载请注明:关东升的博客 Swift 2.0中的print函数有4种重载形式: l print(_:).输出变量或常量到控制台,并且换行. l print(_:_:).输出 ...
- 在一个C程序中,main()函数可以放在哪?
C语言规定,在一个C程序中,main()函数的位置(). A.必须在系统调用的库函数之后 B.必须在程序的开始 C.必须在程序的最后 D.可以在任意位置 答案:D [解析] 每个C程序有且只有一个主函 ...
- Linux上从Java程序中调用C函数
原则上来说,"100%纯Java"的解决方法是最好的,但有些情况下必须使用本地方法.特别是在以下三种情况: 需要访问Java平台无法访问的系统特性和设备: 通过基准测试,发现Jav ...
- CentOS 6中MATLAB print函数“所见非所得”bug的解决方案
0 系统配置+软件版本 主机:Dell optiplex 390 MT (i5) 系统+软件:CentOS 6.5 x64, Matlab R2012, R2013 系统+软件:CentOS 6.7 ...
- MFC程序中消息以及函数的处理顺序简介[转]
MFC应用程序中处理消息的顺序 1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该 ...
- 从Win32程序中的主函数中获取命令行参数
在标准C或者Win32控制台程序的main函数中,它们都有两个参数:"argc" 和 "argv",如下所示: int main(int argc, char ...
- python 中的 print 函数与 list函数
print() 函数: 传入单个参数时默认回车换行,关键词 end 可以用来避免输出后的回车(换行), 或者以一个不同的字符串结束输出. >>> a, b = 0, 1 >& ...
- python中,print函数的sep和end参数
print函数是我们经常使用的,但是它的sep和end参数或许对很多python使用者相对陌生,他们可以让我们的打印更具有个性化. 先来看下官方解释, sep:分割值与值,默认是一个空格 end:附件 ...
随机推荐
- 如何在sublime安装ctags函数追踪插件
一.这个插件是需要下载执行软件才能够操作的,下载地址http://prdownloads.sourceforge.net/ctags/ctags58.zip 然后解压到自己喜欢的目录下,我是安装到 D ...
- mingw-gcc-8.3.0-i686-posix-sjlj
网上无法找到 gcc-8.3.0 的 posix 版本, 所以自己编译了这个版本 gcc -v Using built-in specs. COLLECT_GCC=d:\msys\mingw\bin\ ...
- 资产信息之收集资产代码流程,API的一个认证,数据库表的设计
收集资产代码流程 1.起初我们些的代码是面条式的一堆的逻辑判断. 后来通过了不断的优化升级实现了一个3种方案都支持的CMDB系统,我们用哪种方案只需要在配置文件里修改一下设置就行了. 同时我们 ...
- VIM 编辑器
可视化模块 进入vi/vim编辑器,按CTRL+V进入可视化模式(VISUAL BLOCK) 2 移动光标上移或者下移,选中多行的开头,如下图所示 3 选择完毕后,按大写的的I键,此时下方会提示进入“ ...
- python3 切片
一.切片的目的:获取多个元素 能够进行切片的对象有:字符串.列表.元组 语法: object[start_index:end_index:step] 以下是创建一个列表 a = [0,1,2 ...
- 方法总结:如何实现html页面自动刷新
使用场景: 1. 页面需要定时刷新,实时加载数据,需要实时查看监控数据(H5中的WebSocket和SSE可以实现局部刷新) 2. 一定时间之后跳转到指定页面(登录注册之类) 3. 前端开发使用伪数据 ...
- 几道比较有意思的js面试题
1.[] ? !![] : ![];输出结果是什么? 1 2 3 4 5 let val = [] ? !![] : ![]; console.log(val); //true: //之前的错误解释 ...
- C. mathematican 的二进制
题解: subtask1:爆搜,没状压dp的分 subtask2,3:统计有几个操作就好了,分治ntt优化 subtask4,5: 发现和操作顺序无关,然后我们考虑用分治ntt优化 每个的贡献是$n+ ...
- hdfs api
经常用到,做个眼 如果是单机版 centos(参照给力星 Hadoop配置),要在 core-site.xml 里面配置 ip:9000 别 localhost:9000 windows ...
- NRF51822模块无法识别问题解决办法
我知道没图是没人看的,所以随便瞎截图了几张. 对于很多新手朋友们,或许可能还不是很了解jtag相关的一些调试所需的必须电路,就像很多人不喜欢用stm32的硬件i2c,而是喜欢软件io模拟,就算是使用了 ...