1、 递归函数:
阶乘运算过程 | |||
值 | 计算 | 结果 | 阶乘 |
0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 |
2 | 2*1 | 2 | 2*Factorial(1) |
3 | 3*2*1 | 6 | 3*Factorial(2) |
int face(int value)
{
if(value == 0 || value== 1)
return1;
else
return(value * face(value - 1));
}
2、 反向输出字符串
采用递归:
void display_back(char *string)
{
if(*string)
{
display_back(string + 1);
putchar(*string);
}
}
不使用递归:
void display_back(char *string)
{
while(*string)
string++;
while(*(--string))
putchar(*string);
}
3、 支持个数可变的参数的函数
#include <stdio.h>
#include <stdarg.h>
int add_values(int value,...)
{
va_listargument_ptr;
int result = 0;
if(value != 0)
{
result+= value;
va_start(argument_ptr,value);
while((value = va_arg(argument_ptr,int))!= 0)
result += value;
va_end(argument_ptr);
}
return result;
}
void main()
{
printf("Sum of 3 is %d ",add_values(3,4,0));
printf("Sum of 3 is %d ",add_values(3,4,5,0));
printf("Sum of 3 is %d ",add_values(3,4,5,6,0));
getchar();
}
注意:add_values函数头中省略号(…)的用法,它表示参数的个数是不定的。