C_and_CPP 板


LINE

不好意思又是我c++新手 想问一个问题 举个例子 #include<iostream> using namespace std; void f(int); int main(){ f(2); return 0;} void f(int x){ int a=1; int b=2; if (x==1) cout<<a<<b; if(x==2){ a=2; b=1; f(1);} } 印出来结果会使用变数a=1,b=2 我在想有没有办法能够让递回函数每次都使用新设定的变数呢(就我要用f(2)重新指派的变 数a=2 b=1来印出ab) 我想过用static变数(只有第二次有用,剩下都还是没用xd)、 参照 不过好像都没搞头 ps.主要是我在练习河内塔问题的时候,一般解答都是用四个变数的函数 但是如果能够解决上述问题的话是不是能用一个变数解决呢~ 谢谢! ---- Sent from BePTT on my OPPO CPH1943 --
QR Code



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 112.78.66.70 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1695603674.A.133.html ※ 编辑: amamoimi (112.78.66.70 台湾), 09/25/2023 09:21:36 ※ 编辑: amamoimi (112.78.66.70 台湾), 09/25/2023 09:51:50
1F:推 lwecloud: 把变数a,b传进去;包成class用member variable09/25 10:11
愿闻其详 ※ 编辑: amamoimi (112.78.66.70 台湾), 09/25/2023 12:09:27
2F:推 lc85301: 你可以想 x 就是一个你可以设定的东西09/25 13:16
3F:→ lc85301: 所以你可以把 f 改成 f(int x, int a, int b)09/25 13:16
4F:→ lc85301: 但这样太长了,可以包 strcut 当参数来传09/25 13:17
5F:→ amamoimi: 所以还是得设多变数才行罗?09/25 17:08
6F:推 wulouise: 你要render河内塔的图案还是想做什麽? context比较重要09/25 18:21
7F:推 sarafciel: n只代表搬动的盘子数而已,你想缩减到剩下n,那就会los09/25 22:00
8F:→ sarafciel: e掉哪里搬到哪里的资讯,自然就变成解不出来河内塔了09/25 22:00
9F:→ amamoimi: 我想说如果能在函数里定义a柱b柱c柱,每次盘子增加时呼09/26 08:16
10F:→ amamoimi: 叫f(x-1)能直接让f(x-1)的b柱跟c柱调换这样感觉写起来09/26 08:16
11F:→ amamoimi: 比较直观09/26 08:16
12F:→ amamoimi: 不过这也只是我初步想法~确切要怎麽写我也还没有头绪09/26 08:17
13F:推 LPH66: 最简单的就是告诉函数"你的a柱是谁,b柱是谁,c柱是谁"09/26 15:34
14F:→ LPH66: 而这就只是简单地把参数传进去而已09/26 15:35
15F:→ LPH66: 递回的时候会出现"我的a柱是子问题的b柱"这种事情09/26 15:35
16F:→ LPH66: 那就直接将告诉我是a柱的东西传给子问题的b柱就好09/26 15:36
17F:→ LPH66: (基本上就是二楼提的,要不要包struct随你)09/26 15:36
了解!
18F:→ xanxus27: 感觉 如果不是f(int x, int a, int b)的话09/26 16:07
19F:→ xanxus27: 有一些思路09/26 16:07
20F:→ xanxus27: x用2位数 4位数来表示 ex. x = a*10 + b 个位数是b09/26 16:17
21F:→ xanxus27: 十位数是a 这样只要适当用/跟%应该也能操控09/26 16:17
22F:→ xanxus27: 直接用阵列 x = [a, b, x]09/26 16:18
请问用阵列的话要怎麽写好呢 ※ 编辑: amamoimi (112.78.66.70 台湾), 09/26/2023 17:23:19
23F:推 wulouise: 每根都是std::stack然後 void(stack& from, stack& to)09/26 22:10
24F:→ wulouise: 这样就够了吧?09/26 22:10
25F:→ wulouise: 不过stack要看内容比较麻烦,你可以用vector的push_back09/26 22:11
26F:→ wulouise: pop_back就好09/26 22:11
27F:→ amamoimi: 我是希望函数可以只用「总共几个几个盘子」当变数这样0
9/27 21:42 ※ 编辑: amamoimi (1.200.27.202 台湾), 09/27/2023 21:43:20
28F:→ amamoimi: 毕竟河内塔就是只要你指定盘子的数目,所有的步骤都是决09/27 21:48
29F:→ amamoimi: 定好的呀~09/27 21:48
30F:→ sarafciel: https://godbolt.org/z/fvdeT6Wrr 那多包一层就好了09/28 23:14
31F:→ amamoimi: ...好吧xd我被你说服了 谢谢~09/29 07:42
※ 编辑: amamoimi (1.200.3.16 台湾), 09/29/2023 07:44:16 ※ 编辑: amamoimi (1.200.3.16 台湾), 09/29/2023 07:45:01
32F:推 closer76: 当你使用递回时,要思考的应该是「如何把所有会变动的资 09/30 10:59
33F:→ closer76: 料都用参数传递」,而非「使用静态/全域变数减少参数」 09/30 11:00
34F:→ closer76: 递回有一点像是让电脑帮你计算函式要呼叫几次、顺序为何 09/30 11:03
35F:→ closer76: 这个函式应该要尽可能是「纯函数」,才能保证执行结果 09/30 11:04
36F:→ amamoimi: 了解 谢谢前辈! 10/02 10:13







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP