是否有任何方式读取和解析文件,以查看函数是否使用for循环与递归来获取其答案?假设它只能是一个或另一个,函数不会引发,并且函数保证结束。是否有可能判断函数是否递归?
回答
在“基本”的条件下,你至少可以告诉我们,如果一个函数直接调用自身:
def test(x):
return test(x)
test.__code__.co_name in test.__code__.co_names # true and co_name can't be changed
test.__name__ in test.__code__.co_names # true but name can be changed
这用来检查函数的名称是由函数引用的全局名称。
我说“基本”,因为有很多方法可以解决这个问题。 Lambdas没有名字,所以他们不会匹配他们绑定的全球名称。一个函数可以被重命名。内部代码可以为函数引用不同的名称。该函数可以调用第二个函数,这是真正的递归函数。并且...
基本上,没有办法知道函数是递归的。
有没有一般的方法来证明一个计算机程序完成(它被证明有程序,你不知道)。幸运的是,实际上有静态分析工具,可以为大多数小程序做到这一点。
此外,对于大多数Python函数来说,它明显具有什么样的复杂性(对于受过教育的程序员而言),或者在文档中提及了使用哪种算法。
如果你对细节感兴趣,你应该阅读一两本有关算法的书。你也可以看看https://cs.stackexchange.com/,这是一个更适合一般讨论不同算法的计算复杂度的网站。
对不起,如果我不清楚,但这不是问题 - 我说我想使用该程序完成的假设,并且它不是一个不正确的函数。不是为了证明这一点。我想以编程方式确定函数是使用递归还是循环。我意识到这可能是不可能的,但这是真正的问题。我知道你不能以编程方式确定一个函数是否结束,但我想这可能是一个不同的问题(可能通过查看堆栈或其他东西)。 – user3475234 2014-10-28 04:16:43
- 1. 是否有可能判断iFrame的src是否已更改?
- 2. 是否可以判断一个函数是否处于严格模式?
- 3. 是否可以判断某个javascript代码是否调用特定的函数?
- 4. 是否有可能判断WSAStartup是否在进程中被调用?
- 5. 是否有可能判断用户是否浏览了页面的一部分?
- 6. 是否有可能判断java ResultSet是否为空而不影响记录?
- 7. 是否有可能通过IRowsetFastLoad判断哪一行失败?
- 8. 如何判断AUCTeX是否可用?
- 9. 如何判断一个函数是否是一个类?
- 10. 如何判断加载是否有效?
- 11. 如何判断Java SSLSocket是否有可用的数据?
- 12. 是否有可能在lisp中将递归函数重写为宏?
- 13. 是否有可能在f#中编写像这样的递归分组函数?
- 14. 是否有可能从函数返回中断/停止循环?
- 15. 递归检查数是否是质数
- 16. 是否有可能在XML中传递构造函数参数?
- 17. 是否有可能将函数作为参数传递给c?
- 18. Python:是否可以混合生成器和递归函数?
- 19. 是否可以在箭头函数中进行自递归?
- 20. 是否可以在一个静态函数中递归?
- 21. 是否有可能使用递归方案比较两棵树?
- 22. 是否有可能创建间接递归ctypes.Structure类型?
- 23. 是否有可能限制递归阅读在一行?
- 24. 是否有可能加快这种递归目录方法?
- 25. 是否有可能增加SpiderMonkey中的递归限制?
- 26. 是否有可能将Rails变量传递给JavaScript函数?
- 27. 如何判断是否删除函数返回的指针
- 28. 静态解析:判断两个Javascript函数是否相同
- 29. 如何判断一个javascript变量是否为函数
- 30. 如何判断一个函数是否进入内核
谢谢,这真的非常有帮助,正是我所期待的。有没有办法使用字符串作为函数名称?换句话说,我可以做'nm = coolfunction(test .__ name __)'然后'nm(x)'或类似的东西吗?我觉得像这样,你提到的一些问题可以通过创建一个函数调用图来解决。 – user3475234 2014-10-28 05:23:18
做了一些研究之后,我看到'coolfunction == getattr'。谢谢你的帮助。 – user3475234 2014-10-28 05:31:55