生活中常遇到计算一些具有递增或递减的加减乘除法,则可以利用递归简化计算过程
递归就是要得出第一个值,就得知道下一个值是什么,以此类推到最后一个结束条件结束再逆推回来。
#include <stdio.h>
#include <stdlib.h>int max(int a);
int main()
{
int a;
scanf("%d",&a);
a=max(a);
printf("%d",a);
return 0;
}
int max(int a)
{
if(a==0)
return 1;//当被调用到很多次时返回的1是返还给最后一个递归函数里,而不是返回给最终的a赋值。
else
{
a=a*max(a-1);
}
return a;
}
也可以利用递归解决进制转黄问题
#include <stdio.h>
#include <stdlib.h>
void max(int a);
int main()
{
int a;
scanf("%d",&a);
printf("34的二进制形式:");
max(a);
}
void max(int a)
{
if(a/2>0)
{
max(a/2);//调用每次除以2后的余数进行再除2.
}
printf("%d",a%2);//这个输出是从最后一个递归结束后才开始输出的,其中如果不加上%则会直接输出每次除以2之后的余数。
}