【发布时间】:2021-10-25 14:47:38
【问题描述】:
我的导师告诉我,他会在 C 编程考试中加入双重递归。我以前从未听说过或想象过递归中的递归。它是否像在循环类型的逻辑中带有循环的二维数组?你们能帮我解释一下这个概念或一个例子吗?我在其他网站上找不到任何东西。 谢谢!
EDiT:更新双递归的含义。就像for循环中的for循环一样,问题如下;
Q) 打印图案 1/1! + 2/2! + 3/3! + 4/4! + ... + n/n!并使用递归找到分子和分母。我如何做到这一点是通过从用户那里获取一些模式并将其传递给分子的递归,其中“i”增加到“n”。然后在分子递归中,因子的分母递归开始,所以“rec=rec*i”直到 I
#include<stdio.h>
int numerator(int,int);
int denominator(int,int);
int main()
{
int n=0, i=1;
printf("Please enter the last number of your series : ");
scanf("%d", &n);
numerator(i,n);
}
numerator(i,n)
{
int d=1;
if (i<=n)
{
if (i==n)
{
printf(" %d/%d",i,denominator(d,i));
}
else
{
printf(" %d/%d +",i,denominator(d,i));
i++;
numerator(i,n);
}
}
else
{
return 0;
}
}
denominator(int d,int i)
{
if (i==1)
{
return d;
}
else
{
d=d*i;
i--;
denominator(d,i);
}
}
【问题讨论】:
-
我也从未听说过。也许他指的是mutual recursion?
-
或者也许是双重递归调用,例如一个树搜索函数,它进行两次递归调用来探索二叉树的两个分支;或者比如一个糟糕的斐波那契实现,它对 fib(n-1) 和 fib(n-2) 进行了两次递归调用。
-
或者如果这是理论课:Theoretical Computer Science concept called "double recursion"。但我对此表示高度怀疑,因为这与 C 编程课程没有太大关系。
-
你的导师说的是“递归中的递归”还是你猜的?它似乎与正常的“递归”没有什么不同。无论如何,对于“几个 StackOverflow 用户还没有听说过双重递归”,您应该可以询问(看起来毫无头绪)您的导师进行澄清,或者至少确认/反驳上面 cmets 中的猜测。
-
欢迎来到 SO!我会问你的导师他们的意思。