C语言 使用递归练习时的缺点



我正在做以下练习:

例:

"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] = '';
    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;
}

有人可以指导我一点函数必须是递归的,不知道如何开始

递归的诀窍是考虑需要进行必要更改的条件。 您已经设置好了所有内容,现在考虑如何递增数组,以便您可以将字母分配给对角线位置(有一个模式)。 还需要有一个终止案例。

你可以使用这个:

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

最新更新