在递归函数中因不正确使用公共变量而形成死循环
时间:2022-05-04
本文章向大家介绍在递归函数中因不正确使用公共变量而形成死循环,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
昨天碰到了挺郁闷的错误,我写的一个递归函数,形成了死循环。代码如下:
'递归删除频道,参数:频道ID
Sub DeleteBoard(bid)
'删除该频道所有新闻
News.DeleteByCondition "BoardID=" & bid
'删除该频道所有子频道
Dim bs
bs = Board.GetList("FartherID=" & bid, false, -, -)
If IsArray(bs) Then
For i=LBound(bs) To UBound(bs)
DeleteBoard bs(i).ID
Next
End If
'删除该频道
Board.Delete bid
End Sub
后来检查才发现,罪魁祸首就是那个i,它是一个全局变量。递归的时候,在另一次调用的时候,会修改它的值……因而,就莫明其妙的形成了死循环。修改后代码如下:
'递归删除频道,参数:频道ID
Sub DeleteBoard(bid)
'删除该频道所有新闻
News.DeleteByCondition "BoardID=" & bid
'删除该频道所有子频道
Dim bs, i
bs = Board.GetList("FartherID=" & bid, false, -, -)
If IsArray(bs) Then
For i=LBound(bs) To UBound(bs)
DeleteBoard bs(i).ID
Next
End If
'删除该频道
Board.Delete bid
End Sub
增加了i的内部声明,这样,就会使用内部的i,而不是全局的那个。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- (创建模式 上)设计模式——工厂、抽象工厂 C++/Python3实现
- 【新手宝典】一篇博文带萌新建站并了解建站体系流程和对萌新友好的便捷方式,这篇博文很有可能是你的启蒙文
- 一种不需要敲代码的Python 画图方法
- 【一】Windows API 零门槛编程指南——MessageBox 基本使用及基础讲解
- 【二】Windows API 零门槛编程指南——CreateWindow 窗口创建 “万字长篇专业术语全解”
- 「零门槛多语言 Python/C/C# 通用思想学习系列」第一篇:经典HelloWorld
- 直播系统定制,判断数据连接是否可用
- VS Code 编辑器入门指南上篇-核心概念与组件
- Python turtle库实现基本剖析
- python thinker canvas create_arc 使用详解
- Python3 实现单例设计模式
- Python3 实现建造者模式
- python 实现原型设计模式
- python 最简单的实现适配器设计模式
- python3 最基本且简单的实现组合设计模式