Recursion 是否可以将函数定义为其本身?

Recursion 是否可以将函数定义为其本身?,recursion,cs50,Recursion,Cs50,我理解这行代码有困难。如果您熟悉collatz函数,下面是它的简要说明 是否可以将代码定义为自身 上下文:collatz猜想适用于正整数,并推测如果您遵循以下步骤,则有可能返回到1: 如果n为1,则停止 如果n为偶数,则在n/2上重复此过程 如果n为奇数,则在3n+1上重复此过程 例如,如果n为3: 3-->10-->5-->16-->8-->4-->2-->(所需步骤数:1) 如果从1开始并以abvove形式递归,则编写一个函数来标识达到1所需的步骤数 在下面的代码行中,特别是计算将偶数减少到

我理解这行代码有困难。如果您熟悉collatz函数,下面是它的简要说明

是否可以将代码定义为自身

上下文:collatz猜想适用于正整数,并推测如果您遵循以下步骤,则有可能返回到1:

如果n为1,则停止 如果n为偶数,则在n/2上重复此过程 如果n为奇数,则在3n+1上重复此过程

例如,如果n为3: 3-->10-->5-->16-->8-->4-->2-->(所需步骤数:1)

如果从1开始并以abvove形式递归,则编写一个函数来标识达到1所需的步骤数

在下面的代码行中,特别是计算将偶数减少到1所需的步骤数。如果(n%2)==0,我指的是else 返回1+collatz(n/2)

当你几乎没有定义一个函数时,你怎么能使用它呢?(即科拉茨)

我用了一个while循环来检查当我们降到1的时候

当你几乎没有定义一个函数时,你怎么能使用它呢

在第一行中定义了编写函数调用所需的所有内容:

int collatz(int n)
因此,在
collatz()
内部,即使您还没有完成编写,也可以使用
int
参数调用
collatz()
,并期望得到
int
结果

我们不能做的是在定义完函数之前运行它

def collatz(x):
print(x)
i = 1
while x != 1:
    if (x % 2) == 0:
        x = x/2
        print(x)
        i += 1
    else:
        x = 3*x +1
        print(x)
        i +=1
print("Steps:", i)
int collatz(int n)