NIL结点的意义之一是不是就在于:向上递归的过程中识别出这种情况?

2个回答

xiaoxiongxiongshi 服了
16 天之前 回复

Lua为什么调用这个方法不用加括号，加不加括号有什么不同
function square(state,control) if(control>=state) then return nil else control=control+1 return control,control*control end end for k,v in square,9,0 do print(k,v) end

### &emsp; 建立空二叉树 ``` status InitBitree(Bitree *T){ *T=NULL; return OK; } ``` &nbsp; ### &emsp;建立二叉树 ``` void CreateBiTree(BiTree *T) { TElemType ch; #ifdef CHAR scanf("%c",&ch); #endif #ifdef INT scanf("%d",&ch); #endif if(ch==Nil) /* 空 */ *T=NULL; else { *T=(BiTree)malloc(sizeof(BiTNode)); if(!*T) exit(OVERFLOW); (*T)->data=ch; /* 生成根结点 */ CreateBiTree(&(*T)->lchild); /* 构造左子树 */ CreateBiTree(&(*T)->rchild); /* 构造右子树 */ } ``` 为什么这里T已经等于NULL了还能有T->lchild? 初学者有点迷
swift invalid number of items in section 0
collection view报错 代码如下： let selectIndex = self.photoData.seletedAssetArray.index(of: self.previewPhotoArray[currentIndex]) if selectIndex != nil{ self.rightButton.asyncSetImage(UIImage.zyCreateImageWithView(view: ZYPhotoNavigationViewController.zyGetSelectNuberView(index: "\(selectIndex! + 1)")), for: .selected) } if selectIndex != nil{ if self.rightButton.isSelected == false { let indexPath = IndexPath.init(row: selectIndex!, section: 0) self.photoData.seletedAssetArray.remove(at: self.photoData.seletedAssetArray.index(of: self.previewPhotoArray[currentIndex])!) thumbnailCollectionView.deleteItems(at: [indexPath]) }else{ let indexPath = IndexPath.init(row: selectIndex!, section: 0) thumbnailCollectionView.insertItems(at: [indexPath]) thumbnailCollectionView.reloadItems(at: [indexPath]) thumbnailCollectionViewCellToggeleSelect(indexPath: indexPath) } } 报错信息： 'Invalid update: invalid number of items in section 0. The number of items contained in an existing section after the update (1) must be equal to the number of items contained in that section before the update (1), plus or minus the number of items inserted or deleted from that section (1 inserted, 0 deleted) and plus or minus the number of items moved into or out of that section (0 moved in, 0 moved out) 希望指教，谢谢
GO语言打开文件失败，runtime error

Lisp一些问题，请大佬帮忙解决
* 编写一个LISP函数int-to-binary，将给定的非负整数转换为使用0和1表示二进制数的列表。 例如: (int-to-binary 0) 返回 (0) (int-to-binary 1) 返回(1) (int-to-binary 2) 返回 (1 0) (int-to-binary 13) 返回 (1 1 0 1) 提示: 你可以考虑使用LISP函数floor结合/、rem来解决这个问题。 * 编写一个LISP函数my-member，如果第一个参数存在于第二个参数中，那么返回T，否则返回NIL。 以下是一些例子: (my-member ’a ’()) 返回 NIL (my-member ’a ’(c b a)) 返回 T (my-member ’a ’(c b (a))) 返回 NIL (因为a不是列表的元素，而是包含a的列表。) 这是第二个题目的延伸。编写一个新的LISP函数deep-member，如果给定的参数是给定列表的元素，或者在它的任何子列表中，则返回T，否则返回NIL。 以下是一些例子: (deep-member ’a ’()) 返回 NIL (deep-member ’a ’(c b a)) 返回 T (deep-member ’a ’(c b (a))) 返回 T (deep-member ’a ’(c b (1 (a)))) 返回 T (deep-member ’a ’(c b (1 (d)))) 返回 NIL

IOS NSUserDefaults返回为nil

golang中使用walk展示二维码图片
![图片说明](https://img-ask.csdn.net/upload/201912/17/1576568318_853567.png) **我的需求是点击生成二维码 在下面展示二维码。 **部分代码如下，初学golang 请教各位大佬** ``` type MyMainWindow struct { *walk.MainWindow hcName *walk.Label userIdName *walk.Label startTime *walk.DateEdit endTime *walk.DateEdit hc, userId *walk.LineEdit imageView *walk.ImageView imageComposite *walk.Composite qrCount int } func (mw *MyMainWindow) ShowQRcode() { if mw.imageComposite != nil { mw.imageComposite.Dispose() } mw.getQRcode() widgets := []Widget{} for i:=1;i<=mw.qrCount;i++ { bitmap, err := walk.NewBitmapFromFile("qrcode/qr_"+strconv.Itoa(i)+".jpg") log.Println("qrcode/qr_"+strconv.Itoa(i)+".jpg") if err != nil { walk.MsgBox(mw, mw.Title(), err.Error(), walk.MsgBoxIconError) break } widget := ImageView{ Image: bitmap, Mode: ImageViewModeZoom, } widgets = append(widgets, widget) } imageComposite := Composite{ AssignTo: &mw.imageComposite, Layout: HBox{}, Children: widgets, } if err := imageComposite.Create(NewBuilder(mw)); err != nil { log.Println(err) } } func openWindow(){ mw := &MyMainWindow{} _, _ = MainWindow{ Title: "梅清打印量上报", MinSize: Size{600, 400}, Size:Size{1200,800}, Layout: VBox{MarginsZero: true}, Children: []Widget{ Composite{ Layout:HBox{}, Children: []Widget{ Label{AssignTo: &mw.hcName,Text: "医院编号"}, LineEdit{AssignTo: &mw.hc,}, Label{AssignTo: &mw.userIdName,Text: "工程师编号"}, LineEdit{AssignTo: &mw.userId,}, DateEdit{AssignTo:&mw.startTime, Format:"yyyy-MM-dd",}, DateEdit{AssignTo:&mw.endTime, Format:"yyyy-MM-dd",}, PushButton{ Text: "生成二维码", OnClicked: func(){ if len(mw.hc.Text()) == 0 { walk.MsgBox(mw, mw.Title(), "请输入医院编号", walk.MsgBoxIconError) log.Println("请输入医院编号") return } if len(mw.userId.Text()) == 0 { walk.MsgBox(mw, mw.Title(), "请输入工程师编号", walk.MsgBoxIconError) log.Println("请输入工程师编号") return } mw.ShowQRcode() }, }, }, }, Composite{ AssignTo:&mw.imageComposite, Layout:HBox{}, }, }, }.Run() } ``` 这是报错信息 ![图片说明](https://img-ask.csdn.net/upload/201912/24/1577177949_302636.png)

cocos lua接umeng SDK

``` (defun int-to-binary (alist) (setq n (- length(alist) 1)) (setq result 0) (loop for x in alist do(setq result (+ result (* x (expt 2 n))) (setq n (- n 1)) ) ) (format t "~d" result) (int-to-binary '(1 0 1 1)) ``` 报错如下： ``` *** - SYSTEM::%EXPAND-FORM: (SETQ RESULT (+ RESULT (* X (EXPT 2 N)))) should be a lambda expression ``` 这个程序是要解决如下问题的： ``` Write a LISP function binary-to-int that converts a binary number that is given as list comprising only 0 and 1 into a integer. For example: (binary-to-int ’()) returns nil, because the empty set is not a representation of a binary number. (binary-to-int ’(1 0)) returns 2 (binary-to-int ’(0 1)) returns 1 (binary-to-int ’(0)) returns 0 (binary-to-int ’(1 1 1 0)) returns 14 ```

iOS摄像头视频处理的基础demo，打不开摄像头

![图片说明](https://img-ask.csdn.net/upload/201909/24/1569315360_183228.png) \ -------套装效果下的属性如何检测两组属性自动分行,------ function itemInfo.getItemSuitProp(itemFrom, itemPos) local ret = "" --获取当前装备为的套装属性 local ret_tbl = c.item.getItemPosSuitProp(itemPos, itemFrom) if ret_tbl == nil then return ret end local _caption = ret_tbl["caption"] local _mode = ret_tbl["mode"] local _suitOKCount = ret_tbl["suitOKCount"] if _caption == nil or _mode == nil or _suitOKCount == nil then return ret end local prop_tbl = ret_tbl["prop"] or {} --属性表 local prop_hash_tbl = {}--属性哈希表 --数组转换哈希 for i=1, #prop_tbl do prop_hash_tbl[prop_tbl[i][1]] = prop_tbl[i][2] end -- 英文KEY = {中文名, 尾部所加字符[如果为nil则不加值]} local prop_name_tbl = { ["MaxHP"] = {"HP上限增加+", "% "}, ["MaxMP"] = {"MP上限增加+", "% "}, ["DC"] = {"攻击", "-"}, ["MC"] = {"魔法", "-"}, ["SC"] = {"道术", "-"}, ["TC"] = {"刺术", "-"}, ["AC"] = {"防御", "-"}, ["MAC"] = {"魔防", "-"}, ["HitPoint"] = {"准确+", ""}, ["SpeedPoint"] = {"敏捷+", ""}, ["HealthRecover"] = {"体力恢复+", "%"}, ["SpellRecover"] = {"魔法恢复+", "%"}, ["RiskRate"] = {"幸运+", ""}, ["Reserved"] = {"吸血(虹魔)+", ""}, ["Reserved1"] = {"目标掉内力+", ""}, ["HP"] = {"体力值+", ""}, ["MP"] = {"魔法值+", ""}, ["ExpRate"] = {"经验倍数+", ""}, ["PowerRate"] = {"攻击倍数+", ""}, ["MagicRate"] = {"魔法倍数+", ""}, ["SCRate"] = {"道术倍数+", ""}, ["TCRate"] = {"刺术倍数+", ""}, ["ACRate"] = {"防御倍数+", ""}, ["MACRate"] = {"魔御倍数+", ""}, ["AntiMagic"] = {"魔法躲避+", ""}, ["AntiPoison"] = {"毒物躲避+", ""}, ["PoisonRecover"] = {"中毒恢复+", ""}, ["IncDragonRate"] = {"合击伤害+", "%"}, ["IncNHRate"] = {"内力回复增加+", "%"}, ["UnBurstRate"] = {"防爆+", ""}, ["VampirePoint"] = {"吸血(虎威)+", ""}, ["IncDragon"] = {"合击威力+", ""}, ["MasterAbility"] = {"主属性+", ""}, ["MX"] = {"魔血值+", ""}, ["HeartPower"] = {"神圣属性上限+", ""}, ["HeartMaxPower"] = {"神圣属性下限+", ""}, ["HeartAC"] = {"神圣防御+", ""}, ["UnParalysisRate"] = {"麻痹抗性+", ""}, ["ParalysisRate"] = {"麻痹强化+", ""}, ["DrugsMxReply"] = {"药品魔血值回复+", "%"}, ["DrugsHPReply"] = {"药品体力值回复+", "%"}, ["DrugsMPReply"] = {"药品魔法值回复+", "%"}, ["BreakUpRate"] = {"击破+", ""}, ["HitSpeed"] = {"攻击速度+", ""}, ["MagicDamage"] = {"法术伤害+", ""}, ["DecDragonRate"] = {"合击伤害减免+", "%"}, ["AddDamageRate"] = {"伤害附加+", "%"}, ["Cutting"] = {"斩杀血量+", "%"}, ["HeartPowerRate"] = {"神圣倍数+", "%"}, ["CallTrollLevel"] = {"召唤巨魔技能LV", "\\冰眼巨魔能力冰眼神技"}, ["Teleport"] = {"传送神技", "nil"}, ["Paralysis"] = {"麻痹神技", "nil"}, ["Revival"] = {"复活神技", "nil"}, ["MagicShield"] = {"护身神技", "nil"}, ["MagicShield1"] = {"聚魔护身神技", "nil"}, ["MagicShield2"] = {"精英护身神技", "nil"}, ["UnParalysis"] = {"防麻痹神技", "nil"}, ["UnRevival"] = {"防复活神技", "nil"}, ["UnMagicShield"] = {"防护身神技", "nil"}, ["Paralysis1"] = {"战意麻痹神技", "nil"}, ["Paralysis2"] = {"魔道麻痹神技", "nil"}, ["Paralysis3"] = {"魔意麻痹神技", "nil"}, ["Unfrozen"] = {"防冰冻神技", "nil"}, ["AutoPoison"] = {"施毒神技", "nil"} } local function getPropName(tbl) local ret = "" local key = tbl[1] or "" --取得属性英文KEY local value = tbl[2] or 0 --取得属性值 local _tbl = prop_name_tbl[key] --根据英文KEY查找中文名称 if _tbl then local tmp = _tbl[1] --临时字符串储存 local value1 = prop_hash_tbl["Max"..key] or 0 --联名属性值 if _tbl[2] ~= "nil" then --nil=不加属性值 tmp = tmp..value.._tbl[2] if _tbl[2] == "-" then --联名属性 tmp = tmp..value1.." " end end if (value > 0 and _tbl[2] ~= "-") or (value > 0 or value1 > 0 and _tbl[2] == "-") then ret = tmp end end return ret end local _color_tbl = {[true]=const.clyellow, [false]=const.clred} ret = ret..hintHelper.text(_caption, const.clyellow, 1, nil, 10).."\\" if _mode == 1 then --件数模式 ret = ret.."\\ "..hintHelper.text("首饰3件", _color_tbl[in_array(_suitOKCount, {3,4})]) ret = ret.."\\ "..hintHelper.text("首饰5件", _color_tbl[in_array(_suitOKCount, {5,6,7})]) ret = ret.."\\ "..hintHelper.text("首饰8件", _color_tbl[in_array(_suitOKCount, {8,9})]) ret = ret.."\\ "..hintHelper.text("首饰10件", _color_tbl[_suitOKCount >= 10]) else --装备模式 local items_tlb = ret_tbl["items"] or {} if #items_tlb > 0 then ret = ret.."\\ \\" for i=1, #items_tlb do if (items_tlb[i][2] or 0) == 0 then ret = ret.."\\"..hintHelper.text((items_tlb[i][1] or "").."(缺)", const.clred) else ret = ret.."\\"..hintHelper.text((items_tlb[i][1] or ""), const.clyellow) end end end end ret = ret .. "\\ \\"..hintHelper.text("套装效果：", const.clyellow, 1) if _suitOKCount > 0 then ret = ret.."\\ \\" if _mode == 1 then --件数模式 if in_array(_suitOKCount, {3,4}) then ret = ret.."LV1" elseif in_array(_suitOKCount, {5,6,7}) then ret = ret.."LV2" elseif in_array(_suitOKCount, {8,9}) then ret = ret.."LV3" elseif _suitOKCount == 10 then ret = ret.."LV4" end end --循环显示套装属性 local l_prop_tbl for i=1, #prop_tbl do l_prop_tbl = prop_tbl[i] or {} ret = ret..getPropName(l_prop_tbl) end end return ret end
NodeMCU代码有问题吗？连接不上wifi 试了网上的很多代码 都是报错
![图片说明](https://img-ask.csdn.net/upload/201911/10/1573368889_788519.png) ``` -- init.lua print('Setting up WIFI...') wifi.setmode(wifi.STATION) wifi.sta.config('66666666', '39281788') wifi.sta.connect() tmr.alarm(1, 1000, tmr.ALARM_AUTO, function() if wifi.sta.getip() == nil then print('Waiting for IP ...') else print('IP is ' .. wifi.sta.getip()) tmr.stop(1) end end) ```

《奇巧淫技》系列-python！！每天早上八点自动发送天气预报邮件到QQ邮箱

11月8日，由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办，科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。 　　区块链技术被认为是继蒸汽机、电力、互联网之后，下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力，电力解决了人类基本的生活需求，互联网彻底改变了信息传递的方式，区块链作为构造信任的技术有重要的价值。 　　1...

C语言魔塔游戏

Android性能优化(4)：UI渲染机制以及优化

Python爬虫爬取淘宝，京东商品信息

Java工作4年来应聘要16K最后没要,细节如下。。。

SpringBoot2.x系列教程（三十六）SpringBoot之Tomcat配置
Spring Boot默认内嵌的Tomcat为Servlet容器，关于Tomcat的所有属性都在ServerProperties配置类中。同时，也可以实现一些接口来自定义内嵌Servlet容器和内嵌Tomcat等的配置。 关于此配置，网络上有大量的资料，但都是基于SpringBoot1.5.x版本，并不适合当前最新版本。本文将带大家了解一下最新版本的使用。 ServerProperties的部分源...
Python绘图，圣诞树，花，爱心 | Turtle篇

CPU对每个程序员来说，是个既熟悉又陌生的东西？ 如果你只知道CPU是中央处理器的话，那可能对你并没有什么用，那么作为程序员的我们，必须要搞懂的就是CPU这家伙是如何运行的，尤其要搞懂它里面的寄存器是怎么一回事，因为这将让你从底层明白程序的运行机制。 随我一起，来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说，我们首先就要搞明白它是怎么回事，也就是它的内部构造，当然，CPU那么牛的一个东...

2020年全新Java学习路线图，含配套视频，学完即为中级Java程序员！！

B 站上有哪些很好的学习资源?

Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题，让视音频内容可以不依赖用户安装App，就能进行播放以及在社交平台进行传播。在视频业务大数据平台中，播放数据的统计分析非常重要，所以Web播放器在使用过程中，需要对其内部的数据进行收集并上报至服务端，此时，就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢？ 01 监听事件明细表 名...
3万字总结，Mysql优化之精髓

HTML5适合的情人节礼物有纪念日期功能