2012-02-28 2 views
-1

Мне нужно написать функцию, которая печатает на экране. Если вход 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(); 
} 
+0

Я просто хочу задать вопрос. Возможно ли, чтобы рекурсия имела Если ... elseIf .... еще внутри? – JuanDelCarlos

+0

Рекурсия нужна, если вы знаете, что функция может завершиться. – Woot4Moo

ответ

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(); 
} 
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 
+0

просто быстрый вопрос. printf ('*' * (n + m)) есть ли это "**"? – JuanDelCarlos

+0

в 'python': **' 'X' * 5 ==> 'XXXXX'' ** – kev

+0

в 'C': вы можете использовать ** цикл' for' **. – kev

Смежные вопросы