我见过很多例子,但无法找到正确的程序来编写任何递归函数的重现。例如:如果我看到这些功能, 我该如何写出准确的复发?
void print (int n)
{
if (n>0)
{cout<< n<<endl;
print(n-1);}
}
和
int power (int x, int n)
{
If (n==0)
return 1;
else
return x * power (x, n-1);
}
和
Int fib (int n)
{
If (n==0 or n==1)
return 1;
else
return fib(n-1) +fib (n-2);
}
和
int numberofDigits(int n) {
if ((-10 < n) && (n < 10))
return 1;
else
return 1 + numberofDigits(n/10);
}
这些都是递归函数。我们可以看到,像(斐波那契,因子等)函数的一些函数已经在互联网上预先描述了重复。
但是如何自己写一个复发?
答案 0 :(得分:0)
通常情况下会出现递归函数:
例如在Fibonacci案例中,基本情况为&#34;如果n为1或0,则答案为1&#34;,而递归情况定义为前两个数字的总和。
创建自己的递归函数的方法是隔离递归和基本情况,然后实现。所以规范的递归函数看起来像这样:
type my_recursion(type var)
{
if (/* base case */)
return /* base case value */;
else
return my_recursion(/* pass something in here */);
}