递归反向输出字符串

看题时发现这题,本来想用数组,但一看要求需要用递归,摸不着头脑。

首先,要介绍一下递归概念

 最终肯定有一个递归结束的判断条件,例如上面的已知的f(1)的值。

 1 #include<stdio.h>
 2 void reverse_string(char * string)
 3 {
 4     if(*string!='\0')
 5     {
 6         reverse_string(string++);
 7             printf("%c",*string);
 8     }else 
 9         return ;
10 }
11 void main()
12 {
13     char *string="qwer";
14     reverse_string(string);
15     printf("\n");
16 }
 1 void inverse(char *p)
 2 {
 3   if( *p = = '\0' )
 4   return;
 5   inverse( p+1 );
 6   printf( "%c", *p );
 7 }
8 int main(int argc, char *argv[]) 9 { 10   inverse("abc\0"); 11   return 0; 12 }

 现在介绍一下用递归来计算阶乘的例子

#include <stdio.h>
long int multiplyNumbers(int n);
 
int main()
{
    int n;
    printf("输入一个整数: ");
    scanf("%d", &n);
    printf("%d! = %ld", n, multiplyNumbers(n));
    return 0;
}
long int multiplyNumbers(int n)
{
    if (n >= 1)
        return n*multiplyNumbers(n-1);
    else
        return 1;
}

 

posted @ 2020-04-14 16:06  刺儿客  阅读(741)  评论(0)    收藏  举报