社区
C#
帖子详情
为什么输出的只有5
wsxqaz
2005-12-30 06:44:33
下面为什么输出的只有5
private int a(int i)
{
int c=0;
if(i==0)
{
c=0;
return 0;
}
else
{
textbox1.text=textbox1.text+a(i-1));
return i;
}
}
private void b()
{
a(5);
}
...全文
171
17
打赏
收藏
为什么输出的只有5
下面为什么输出的只有5 private int a(int i) { int c=0; if(i==0) { c=0; return 0; } else { textbox1.text=textbox1.text+a(i-1)); return i; } } private void b() { a(5); }
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yuanreid
2005-12-31
打赏
举报
回复
看看我的程序,结果还是4
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public int x =0;
private int a(int i)
{
if(i==0)
{
return 0;
}
else
{
x = x + a(i - 1);
return i;
}
}
private void b()
{
a(5);
}
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
b();
textbox1.Text = x.ToString();
}
}
}
wsxqaz
2005-12-31
打赏
举报
回复
名白了我用Arraylist在每一次递归时Add一个这个时候arraylist里到是有各个值的
止戈而立
2005-12-31
打赏
举报
回复
当你执行a(5)的时候。。
那么:
textbox1.text=textbox1.text+a(i-1);实际上就是:
textbox1.text=textbox1.text+a(4);现在不知道你看懂了没有?无论你在计算a(4)的过程中,i怎么变。最终要 求的是a(4)的值。。
对比一下上面的朋友给你改后的代码吧:
winterice(冬天的冰)
else
{
textbox1.text=textbox1.text+a(i-1));
return i;
}
改成:
else
{
int d=a(i-1);
textbox1.text=textbox1.text+d;//
return i;
}
就输出“01234”了
wsxqaz
2005-12-31
打赏
举报
回复
我没有看懂为什么textbox1.text=textbox1.text+a(i-1)等于textbox1.text=a(i-1),虽然a(i)反回的是一个整型,但是textbox却可以保存字符,而且textbox在每一次帝归的时候都被付过值了,但是在下一次的时候textbox又恢复原来的值了
止戈而立
2005-12-31
打赏
举报
回复
我说过了:textbox1.text=textbox1.text+a(i-1);这一句相当于textbox1.text=a(i-1);
随着i的变化,a(i-1)的值当然会跟着变了。。
wsxqaz
2005-12-31
打赏
举报
回复
我跟了一下发现,每一次递归调用以后,textbox1.text里的值都在变,也就是textbox1.text=a(i-1)的值,比如i=1时textbox1.text=1(textbox.text确实被付值了)但是这个值并没有被保存下去,在跳到下一个递归的地方时值并没有相加,而是从新给textbox付值了,大家跟跟看,每一次递归调用以后好象textbox里是用值的
止戈而立
2005-12-31
打赏
举报
回复
另外提一句:
textbox1.text的结果为什么只输出了一个4。。而没有在多次执行该行代码后获得很多的值。。
这是因为
a(i-1)只返回最终的一个值。。放在哪里它都返回一个整型值。。不会有其它。。
因此textbox1.text如果原本是空字符串,那么textbox1.text=textbox1.text+a(i-1);这一句相当于textbox1.text=a(i-1);
dwp008
2005-12-31
打赏
举报
回复
min_jie(止戈)
调试了一下,终于看明白了。。
首先i的值从5一步步自减到0,算出了a(0)的值。。
然后又从0一步步自增到5,算出a(5)的值。。。
大家可以自己调试看看。。
这个是正解
递归都这样啊
winterice(冬天的冰) 说的方法正好可以反映出最后递归的顺序
止戈而立
2005-12-31
打赏
举报
回复
帮你分析一下代码:
private int a(int i)
{
int c=0;//这个变量没意义
if(i==0)
{
c=0;//没意义
return 0;//这表示a(0)=0
}
else
{
textbox1.text=textbox1.text+a(i-1);//这一句跟返回值没什么关系,也可暂时不看
return i;//这个表示a(i)=i,不要受上一句的影响,返回值跟上一句无关。a(5)当然等于5
}
}
当然,textbox1.text最后的值是4。因为a(i-1)=a(4)=4
止戈而立
2005-12-31
打赏
举报
回复
调试了一下,终于看明白了。。
首先i的值从5一步步自减到0,算出了a(0)的值。。
然后又从0一步步自增到5,算出a(5)的值。。。
大家可以自己调试看看。。
winterice
2005-12-31
打赏
举报
回复
应该输出4,把那代码
else
{
textbox1.text=textbox1.text+a(i-1));
return i;
}
改成:
else
{
int d=a(i-1);
textbox1.text=textbox1.text+d
return i;
}
就输出“01234”了
wsxqaz
2005-12-30
打赏
举报
回复
应该是4
我不管是字符连接还是相加反正都不应该输出一个数啊
就算是字符连接也应该是123……
net_explorer
2005-12-30
打赏
举报
回复
问题在于他用的是字符型的和整形的相加了.这样的话,就是字符串之间的连接了.
yuanreid
2005-12-30
打赏
举报
回复
to ChengKing(Enthusiasm Bigrosoft)
你运行试试吧
yuanreid
2005-12-30
打赏
举报
回复
用C++试了试,结果是对的返回10。即 0+1+2+3+4 = 10
而用C#跟踪了一下,发现是 0+1+1+1+1 = 4
确实不解。
ChengKing
2005-12-30
打赏
举报
回复
a()方法第一次执行的时候,这句: return i; 就执行了,且返回了:5
中间虽然进行了许多递归调用,但根本不影响最终结果: 5
yuanreid
2005-12-30
打赏
举报
回复
我输出的是4
想请教一下大佬们,单片机
输出
高电平5V,为什么接上L298N之后
输出
会被拉低到2.2V
我使用的单片机是STC15W408AS(DIP16的),使用CH340G接电脑供电,VCC=5V,程序里将P32置高,不接L298N的时候
输出
正常,但是接上之后
输出
就被拉低到2.2V了,然后L298N的
输出
就没有了,使能端和IN4的输入都没有问题,单片机的引脚也换着试过了,只有置高的那个引脚电压会被拉低,我搞不清楚是什么原因了,恳请大佬们帮帮孩子吧。 ...
tensorflow softmax
输出
只有0或1
原 tensorflow softmax
输出
只有0或1 2017年12月07日 11:21:52 HaHa_33 阅读数:1658 softm...
matlab
输出
只有一个值,function函数定义时有两个
输出
,但实际只
输出
一个值
那我这个呢?function [G_matrix coded_msg] =en(msg)K = 10; % 信息分组长度N = 20; % 预期生成的编码符号的个数,N要大于K*Zc = 0.03; % 此参数影响较大delta = 0.2; % c和delta为鲁棒孤子分布中的两个参数% -------...
c++ double 只
输出
五位_C++格式化输入
输出
简介
一、问题背景C++语言支持C语言的格式化输入
输出
;竞赛:输入+处理+
输出
1s内;优点:C语言的格式化输入
输出
相比C++语言cin,cout输入
输出
方式效率更好;尤其是在信息学奥赛中输入
输出
数据超过MB以上时,需要使用C语言的格式化输入
输出
提高效率。Bytes:字节bit:位1Bytes=8bit1KB=1024B1MB=1024KB1MB=1024*1024B注意:不建议在同一程序中,C和C++风...
【电子电路】TPS5430降压
输出
-5V的应用电路
负载周期D = Vout/(Vout - Vin ) =-5/(-5-15)= 0.25 平均电感电流是 II avg = I/(1-D) ;TPS5430最大的
输出
电流是3A,所以这里这个电路最大
输出
的DC负载电流是 同样的,基于好几个原因(这个不详)电感的纹波电流是应该保持比较小的。峰值电感电流应该是平均电感电流加上峰峰值的一半(这里不懂,为什么要加上平均电感电流?)。由于TPS5430的内部规定最大峰值电流不得超过4A,所以这个峰值也必须在4A以下。 电感交流纹波电流也决定了必须低于直流
输出
电流,当.
C#
111,111
社区成员
642,556
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章