大佬帮忙看一下这个递归子函数表达的算法,实在是看不懂,谢谢!

/*将数组中的字符反向输出*/
void backward(char s[],int index)
{
if(s[index])
{
backwards(s,index+1);
printf("%c",s[index]);
}
}

if后面括号里的是什么东西?是表达式吗?
这个递归算法是什么意思?
本人小白,希望大佬帮忙看一下,谢谢!

if(s[index])
相当于
if(s[index] != '\0')
而\0是表示字符串结束的标记.

这个算法相当于以下循环的版本

void backward(char s[])
 {
int index = 0;
while(s[index]) index = index + 1;
while (index > 0)
printf("%c",s[--index]);
}

首先,if括号里肯定是表达式,这个表达式会返回true或者false
当递归到底的时候就开始倒序输出。
完善你的代码如下:

#include<stdio.h>
void backward(char s[],int index)
{
    if(s[index])
    {
        backward(s,index+1);
        printf("%c ",s[index]);
    }

}
int main()
{
    char s[] = "abcde";
    backward(s,0);
    return 0;
}

图片说明