首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >yew app - rustwasm错误未捕获RangeError:超过最大调用堆栈大小

yew app - rustwasm错误未捕获RangeError:超过最大调用堆栈大小
EN

Stack Overflow用户
提问于 2021-01-05 13:09:46
回答 1查看 94关注 0票数 0

我试着把数独解作紫杉app。使用yew="0.17.4“版本。但是得到下面的错误

代码语言:javascript
复制
Uncaught RangeError: Maximum call stack size exceeded
    at dlmalloc::dlmalloc::Dlmalloc::malloc::hb6b25cc27fa2f08c (wasm_bg.wasm:wasm-function[55]:0x5f0d)
    at __rdl_alloc (wasm_bg.wasm:wasm-function[327]:0x23108)
    at __rust_alloc (wasm_bg.wasm:wasm-function[362]:0x23480)
    at alloc::raw_vec::RawVec<T,A>::reserve::h02d54539a997f0ac (wasm_bg.wasm:wasm-function[211]:0x207e4)
    at <&mut W as core::fmt::Write>::write_str::he2cb1047a173d57a (wasm_bg.wasm:wasm-function[288]:0x22a02)
    at core::fmt::Formatter::pad_integral::hfd6532b3a41ee584 (wasm_bg.wasm:wasm-function[104]:0x16c73)
    at core::fmt::num::imp::fmt_u64::h5081cd6222065ff2 (wasm_bg.wasm:wasm-function[156]:0x1cecb)
    at core::fmt::num::imp::<impl core::fmt::Display for u32>::fmt::hd7239ff7b4d279a9 (wasm_bg.wasm:wasm-function[388]:0x23617)
    at <&T as core::fmt::Display>::fmt::h8b339f7b56577d63 (wasm_bg.wasm:wasm-function[392]:0x2364d)
    at core::fmt::write::h8b996d8af01475c9 (wasm_bg.wasm:wasm-function[103]:0x16b15)

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=16e0219070bd7245a50a209de0ce2cd4

EN

回答 1

Stack Overflow用户

发布于 2021-01-06 01:51:32

让我们回顾一下你的solve函数:

代码语言:javascript
复制
fn solve(&mut self)-> bool{
    match self.getemptycell(){
        Some((row,col)) => {
            for value in 1..10{
                if self.IsValidValue(row,col,value){
                    let index = (row*8 + row) + col ;
                    self.cellule[(row*8+row)+col].value = value;
                    log::info!("value = {}",value);
                    if self.solve(){ // <----------------------------- Recursion starts here
                        return true

                    }
                    self.cellule[(row*8+row)+col].value = 0;
                }

            }
            return false
        },
        _      =>   { 
            // log::info!("{:?}",self.cellule);
            return true
        },

    }

}

(line 90).

  • Then函数检查一些值,如果这些值与条件匹配,则函数再次调用自身,它将根据相同的条件检查相同的值,并再次调用自身。

  • Then

  • 以及

,堆栈将溢出。

对于递归调用,您应该更加小心。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65573562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档