【问题标题】:python loop function in cscs中的python循环函数
【发布时间】:2022-11-18 08:33:08
【问题描述】:

描述:Python 可以互相循环函数。 cS 循环也能起作用吗?

示例蟒蛇:

def func():
   x=input(">")
   func()

示例 C#预期的:

namespace f
{class f{
   static void main(string[] args){
      void stuff() {
         Console.readLine()
         stuff()
      }
   }
}}

我认为在 cs 函数中循环函数是不可能的。

我所说的循环函数的意思是将 void 放入容器中。这就是我的意思Python:

def g():
   x=input(">")
   g()

输出(打字机):

Python Latest Update
>h
>bruh
>new line
>new new line
>line
>infinite input lines
> repeating function

我使用它是因为在 python 中我在脚本中添加了命令并且我这样做了所以我不需要重新输入直到 python 停止输入。

例子:

Problem (python script):
def func():
   x=input(">")
   if x=="help":
      print("commands: help")
      x=input(">")
      if x=="help":
         #repeat

Solution (python script):
def func():
   x=input(">")
   if x=="help":
      print("commands: help")
      func()

为什么我将示例放在 python 脚本中:idk 如果你可以在 c# 中执行此操作,那么我不会混淆任何人

这会发生在 C# 中吗?

【问题讨论】:

  • 警告那些标记为描述性/清晰度较低的人:我会尽我所能提供所有细节。
  • 你在这里谈论的是“递归”。而你正在做的是递归的一个非常糟糕的例子。您不应该对这种循环使用递归。每个函数调用都会一遍又一遍地创建另一个堆栈框架,耗尽内存。是的,当然 C# 支持递归,但在这些情况下你应该使用循环。
  • 我正在制作一个命令行 exe 文件。那也会重现吗?
  • 应用程序是什么并不重要。你应该在这里循环,而不是使用递归。递归对数学函数和嵌套算法很有帮助,但事实并非如此。

标签: python c#


【解决方案1】:

我不熟悉 C# 但希望此页面可以帮助 Recursive Function C#

你想要做的叫做递归函数

【讨论】:

    【解决方案2】:

    每种现代语言都支持递归。你的例子中的问题是你有一个嵌套函数,而 C# 没有。你会这样写:

    namespace f {
      class f{
        static void stuff() {
          Console.readLine();
          stuff();
       }
       static void main(string[] args){
          stuff();
       }
      }
    }
    

    但我想重申,这是不好的做法。在某些语言中,编译器可以捕捉到这种“尾递归”并对其进行优化,将其转变为不使用堆栈空间的“跳转”。 Python 和 C# 不这样做。

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 2019-07-15
      • 1970-01-01
      • 2011-05-07
      • 2013-11-15
      • 2018-10-06
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      相关资源
      最近更新 更多