Gurus,
我想知道如何编写一个打印的递归函数
1
12
123
1234
...
......
例如:display(4)应该打印
1
12
123
1234
Code
#include <stdio.h>
void print(int n)
{
if(n != 0)
{
print(n-1);
printf("\n");
print(n-1);
printf("%d",n);
}
}
int main()
{
print(3);
}
Output
1
12
1
123
Issues
我想写一个纯递归 (没有任何循环)功能但无法过滤不需要的打印件。
希望有人能帮助我!
Update
感谢大家的回答。从给出的所有评论来看,我们似乎可以只用递归来编写一个,并且需要一个循环。
要定义递归函数,您必须做三件事:
-
定义该函数的作用。在本例中,它打印从 1 到n.
-
定义什么是递归调用。下次会发生什么?最简单的方法是自下而上思考;在这种情况下,在前面的每一行上,它打印的数字最多比前一行少一个。因此,每次再次调用该函数时,都希望用比前一个数字减一的值来调用它。
-
定义您的停止条件。我什么时候应该停止递归?在这种情况下,一旦您达到数字 1,这将是您的最后一次迭代。这意味着,我们要调用递归函数until达到此停止条件 - 或者换句话说,whilen大于1。
因此,我们最终得到以下算法:
function display(n):
if(n > 1):
display(n-1);
print 1..n;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)