卡住写入递归功能,打印到屏幕上

时间:2012-02-28 12:11:22

标签: c design-patterns recursion

我需要编写一个打印到屏幕的功能。如果输入为5,则输出为:

+**
****
*******
***********
****************

这是我目前的代码:

int recursions(int number,int condition)
{
    if(condition < 0)
    {
        printf("\n");
        return 0;
    }
    else
    {
        printf("**");
        recursions(number + 2,condition - 1);
    }
}

int main()
{
    int number;
    printf("Please give a number!\n");
    scanf("%d",&number);
    printf("+");
    recursions(number,number);
    getch();
}

2 个答案:

答案 0 :(得分:1)

#include <stdio.h>

void print(int n){
    if(n > 0){
        putchar('*');
        print(n-1);
    } else
        putchar('\n');
}

void recursions(int n,int cond){
    if(cond > 0){
        print(n*(n-1)/2 + 1);
        recursions(n+1, cond-1);
    }
}

int main(){
    int number;
    printf("Please give a number!\n");
    scanf("%d",&number);
    printf("+");
    recursions(2,number);
    getch();
}

答案 1 :(得分:0)

我是在python中完成的,您可以轻松将其翻译为C

$ python3
>>> def fun(n):
...     if n==1:
...         print('+**')
...         return 2
...     else:
...         m = fun(n-1)
...         print('*' * (n+m))
...         return n+m
...
>>> fun(5)
+**
****
*******
***********
****************
16