当前位置:  开发笔记 > 编程语言 > 正文

生成唯一帐号 - 递归调用

如何解决《生成唯一帐号-递归调用》经验,为你挑选了1个好方法。

嗨,我需要生成9位数的唯一帐号.这是我的伪代码:

function generateAccNo()

    generate an account number between 100,000,000 and 999,999,999

    if the account number already exists in the DB 
        call generateAccNo()    /* recursive call */
    else
        return new accout number
    end if

end function

该函数似乎运行良好,但我有点担心递归调用.

这会导致任何内存泄漏(apache下的PHP 5)吗?

这是解决这个问题的可接受方式吗?

感谢您的输入.



1> Esteban Aray..:

你意识到这很可能导致堆栈溢出,对吗?随着客户数量的增加,未找到可接受帐号的可能性增加.

另外,为什么你不能只进行顺序帐号而每次只增加一个?使用这种方法,您只需要读取数据库中当前的最大ID,然后将其递增.

很抱歉这么直率,但你的解决方案是一个解决问题的可怕方法.它将使用大量内存(因为堆栈可能无限增长)并且它将对数据库进行大量昂贵的调用.

您应该考虑其他方法:
我强烈建议您在每次创建客户时增加客户编号.实际上,如果你正确设置你的数据库(在id列上有自动增量),你甚至不必设置id.每当您插入新客户时,都会为您设置ID.


但stackoverflow太棒了!
推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有