C_and_CPP 板


LINE

献丑一下.... 稍微试着解决重复加法的问题 #include <stdio.h> void func(int x,int y,int z) { printf("%d x %d = %2d%s",x,y,z,((y==9)?"\n":" ")); if ( y == 9 && x < 9 ) func(x+1,1,x+1); else if ( y < 9 ) func(x,y+1,z+x); } int main() { func(1,1,1); return 0; } ※ 引述《jserv (松鼠)》之铭言: : ※ 引述《red0whale (red whale)》之铭言: : : 刚才做题目, : : https://i.imgur.com/NI4TYj5.jpg : : 不用回圈叫我列九九乘法表是哪招? : : 说实在我真想不到不用回圈就能简单列出九九乘法表的方法了 : 不用 iteration,就用 recursion,顺便预测出题者还不准你用乘法操作。 : 这里提供一份实作程式码: : #include <stdio.h> : int mul(int x, int y) { : if (!x || !y) return 0; : return x + mul(x, y - 1); : } : void table_row(int x, int y) { : if (y > 1) table_row(x, y - 1); : printf("%d x %d = %2d | ", x, y, mul(x, y)); : } : void mult_table(int x, int y) { : if (x > 1) mult_table(x - 1, y); : table_row(x, y); : printf("\n"); : } : int main() { : mult_table(9, 9); : return 0; : } : 参考输出: : 1 x 1 = 1 | 1 x 2 = 2 | 1 x 3 = 3 | 1 x 4 = 4 | 1 x 5 = 5 ... : 2 x 1 = 2 | 2 x 2 = 4 | 2 x 3 = 6 | 2 x 4 = 8 | 2 x 5 = 10 ... : 3 x 1 = 3 | 3 x 2 = 6 | 3 x 3 = 9 | 3 x 4 = 12 | 3 x 5 = 15 ... : ... : 9 x 1 = 9 | 9 x 2 = 18 | 9 x 3 = 27 | 9 x 4 = 36 | 9 x 5 = 45 ... : 乍看可满足题目要求,不过仍有大量改进空间: : 1. 乘法实作可避免大量重复的加法; : 2. 九九乘法中 3 * 8 和 8 * 3 的输出数值相等,这类运算也可避免; : 3. 实作用到三个递回函式,可缩减; : 4. if (x > 1) 和 if (y > 1) 这类比较也可缩减次数,甚至免去比较 : (美妙的 bitwise 操作); : 5. 改善输出的排版; : 我想将上述改进项目丢给学生当作业 (*笑*) --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.250.205.229
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1532165600.A.763.html
1F:推 Schottky: 这招不错,用递回把计算结果传递下去 07/21 18:35
2F:推 oToToT: 我以为重复加法是某种做二进位拆分 07/21 19:15
※ 编辑: bbuc (60.250.205.229), 07/21/2018 19:20:41
3F:推 Schottky: 二元树 divide & conquer 并不会节省加法的总数量啊 07/21 21:06







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灯, 水草

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

TOP