呵呵,这是简单的递归算法,思路如下:
fun函数第一句if(*a)判断指针(实参是矩阵s[0])的内容是否为0,第一次判断得到a的内容是a 的ansci 码,故不是零,执行条件语句,条件语句是{fun(a+1); printf("%c",*a);对于第一句,对fun函数自己调用自己(递归),与调用其他函数无差别,然后执行if(*a),此时因为形参是a+1, 故此时实参是s[1],就是b,然后还是不为零。。。继续递归。。。直到,遇到第五个实参的元素,然后s[4]的内容是0(其实是\0(转义字 符),ansci码值是0),所以条件为假,随后返回执行递归就是printf("%c",*a);这句话,但是此时a的实参是s[3],也就是d,输出 的也就是d,同理依次递归下去。。。就是dcba;这段程序利用了递归的返回与逆序的顺序相同。
fun函数第一句if(*a)判断指针(实参是矩阵s[0])的内容是否为0,第一次判断得到a的内容是a 的ansci 码,故不是零,执行条件语句,条件语句是{fun(a+1); printf("%c",*a);对于第一句,对fun函数自己调用自己(递归),与调用其他函数无差别,然后执行if(*a),此时因为形参是a+1, 故此时实参是s[1],就是b,然后还是不为零。。。继续递归。。。直到,遇到第五个实参的元素,然后s[4]的内容是0(其实是\0(转义字 符),ansci码值是0),所以条件为假,随后返回执行递归就是printf("%c",*a);这句话,但是此时a的实参是s[3],也就是d,输出 的也就是d,同理依次递归下去。。。就是dcba;这段程序利用了递归的返回与逆序的顺序相同。