我正在做以下练习:
示例:
"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;
}
有人可以指导我一点功能必须递归,不知道如何开始
答案 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);
}
}