使用递归锻炼时的缺点

时间:2014-11-15 03:24:30

标签: c arrays recursion

我正在做以下练习:

示例:

"abcde"

输出:

a
 b
  c
   d
    e

这里是模板代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char* diag(char* str, char* r)
{
    /* Write code */
    r[0] = '\0';
    return r;
}

int main (void)
{
    char str [] = "abcde";
    int n = strlen(str);

    char* r = malloc(n * n + 1);

    r = diag(str, r);

    puts(r);

    free(r);
    return 0;
}

有人可以指导我一点功能必须递归,不知道如何开始

2 个答案:

答案 0 :(得分:1)

递归的技巧是考虑进行必要更改所需的条件。你已经完成了所有设置,现在考虑如何增加数组,以便你可以将字母分配到对角线位置(有一个模式)。还需要一个终止案例。

答案 1 :(得分:0)

您可以使用:

printDiagonally(char* s, int low, int high){
  if(low < high){
      int i;
      for(i=0 ; i<low; i++)
          printf(" ");
       printf("%c\n", *s);
       printDiagonally(++s, low+1, high);
   }
}