1.假设元素序列存放在数组a中,数组a中n个元素的最大值可以通过将a[n-1]与前面n-1个元素最大者比较得到。数组元素中只有一个元素,最大者就是a[0],否则有,max(a,n)=(a[n-1]>max(a,n-1)?a[n-1]:max(a,n-1)。
//求n个数中的最大值
#include <stdio.h>
int max(int a[],int n);
int main()
{
int a[]={7,8,12,33,44,99,42,41,55};
int n,i;
n=sizeof(a)/sizeof(a[0]);
for(i=0;i<n;i++)
{
printf("%4d",a[i]);
}
printf("\n 最大值为%d\n",max(a,n));
return 0;
}
int max(int a[],int n)
{
int m;
if(n<=1)
{
return a[0];
}
else
{
m=max(a,n-1);
return a[n-1]>=m?a[n-1]:m;
}
}
2.十进制转换成二进制,不断地将商作为新的被除数除以2,每次得到的余数序列就是二进制数
//十进制转换成二进制
#include <stdio.h>
int Bin(int num);
int main()
{
int n;
printf("请输入一个数\n");
scanf("%d",&n);
printf("二进制是:");
Bin(n);
printf("\n");
return 0;
}
int Bin(int num)
{
if(num==0)
{
return 0;
}
else
{
Bin(num/2);
printf("%d",num%2);
}
}