C_and_CPP 板


LINE

平台: Leetcode in C Implement pow(x, n), which calculates x raised to the power n (i.e. xn). 在case myPow(0.00001,2147483647) 出现stack overflow的情况, 其实第二个参数不到INT_MAX就会overflow了。 请问是不是递回太深的缘故,要怎麽保证不会overflow? 谢谢 double myPow(double x, int n){ double output; if(n>0) { if(n == 1 ) return x; else { output = x*myPow(x,n-1); } } else if(n == 0 ) return 1; else { if(n == -1) return 1/x; else output = (1/x)*myPow(x,n+1); } return output; } --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.230.161.136 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1601434122.A.85E.html ※ 编辑: anoymouse (61.230.161.136 台湾), 09/30/2020 10:51:23
1F:推 xiefengan: Google 快速幂 09/30 12:19
正在看 还在消化中 也许可以避免stack overflow。
2F:→ s90104123: INT_MAX看看? 09/30 16:36
3F:推 yangerma: 你这边提到了两种overflow,我还不确定你是不是把两种搞 09/30 19:25
4F:→ yangerma: 混了。 09/30 19:26
5F:→ yangerma: "stack overflow"就像你说的可能是递回过深的关系,至於 09/30 19:26
6F:→ yangerma: 多深叫过深跟runtime的系统设定、还有你的递回函数会吃 09/30 19:26
7F:→ yangerma: 多少记忆体有关。至於递回为什麽不能过深,跟递回在执行 09/30 19:26
8F:→ yangerma: 时是如何做到的有关,不知道的话值得去了解一下。 09/30 19:26
9F:→ yangerma: 另外你提到的跟INT_MAX有关的是整数的overflow,因为C语 09/30 19:26
10F:→ yangerma: 言里int只能表达某个大小范围内的整数,如果在拿int运算 09/30 19:26
11F:→ yangerma: 的过程中超过那个范围,导致运算的结果不如预期。 09/30 19:26
12F:→ yangerma: 以上两种overflow完全是两回事,而这份程式码看起来很可 09/30 19:26
13F:→ yangerma: 能是发生了第一种(stack overflow)。你可以数数看这个程 09/30 19:26
14F:→ yangerma: 式应该会递回几层,以後就会知道这样的深度是会导致stac 09/30 19:26
15F:→ yangerma: k overflow的。 09/30 19:26
16F:→ yangerma: 至於解决方法,最简单的就是不要用递回ww 09/30 19:26
我这边纯粹在指stack overflow,会提到INT_MAX只是因为leetcode把第二个参数设成 INT_MAX,当然如果最终回传直>INT_MAX可能也有问题,但目前主要是想先处理 stack overflow。
17F:推 alan23273850: 能用回圈就不要用递回 09/30 19:51
18F:→ WPC001: 你这个为什麽一定要用递回? 09/30 22:58
是没有一定要用递回 我一开始也是想用回圈,但是我想看看别人是怎麽做的 发现该题的讨论区通通都是用递回,就想说试试看递回。 ※ 编辑: anoymouse (36.227.161.96 台湾), 10/02/2020 12:05:12
19F:推 kingofsdtw: 别用recursive看看? recursive考试用而已 10/06 18:31
20F:→ kingofsdtw: 现实上一堆会变成地雷 10/06 18:31







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

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

TOP