我正在做以下练习:
例:
"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);
}
}