2012-02-28 15 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

私はちょっと質問したいです。 再帰がある可能性はありますか If ... elseIf .... else else? – JuanDelCarlos

+0

再帰には関数が終了できることがわかっていればifが必要です。 – 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

関連する問題