递归反向输出字符串
看题时发现这题,本来想用数组,但一看要求需要用递归,摸不着头脑。
首先,要介绍一下递归概念

最终肯定有一个递归结束的判断条件,例如上面的已知的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; }

浙公网安备 33010602011771号