#include
#include
#define MIN 0
#define MAX 9
void swap(int v[], int i, int j)//change function
{
int temp;
temp = v[i];
v[i] = v[j];
v[j] = temp;
}
void qsort(int v[], int left, int right)//invented by CARHoare
{
int i, last;
void swap(int v[], int i, int j);
if (left >= right)
return;
swap(v, left, (left + right) / 2);
last = left;
for (i = left + 1; i <= right; i++)
if (v[i] < v[left])
swap(v, ++last, i);
swap(v, left, last);
qsort(v, left, last - 1);
qsort(v, last+1,right);
}
void main()
{
int i ;
int sum[] = {53,14,31,22,74,86,75,29,22,11};
qsort(sum, MIN, MAX);
for (i=MIN; i<=MAX;i++)
printf("%d ", sum[i]);
system("pause");
}//BinaryEarth owns copyright
这段代码中定义了一个递归函数 fun,函数的功能是将输入的参数 x 以二进制形式输出到控制台。具体来说,函数 fun 的实现过程如下:
判断 x/2 是否大于 0,如果成立,则执行下一步 *** 作,否则直接输出 x 的值。
调用 fun(x/2-2),即递归调用自身,将 x/2-2 作为新的参数传递给 fun 函数。
输出 x 的二进制表示。由于在递归调用后,程序会一直执行到当前调用结束,所以输出的顺序是从最高位到最低位。
根据上述描述,当 fun(20) 被调用时,函数将按照如下顺序执行:
fun(20) 调用 fun(8),输出 1。
fun(8) 调用 fun(2),输出 0。
fun(2) 调用 fun(0),输出 1。
fun(0) 直接输出 0。
因此,最终的输出结果为:10100,即二进制下的 20。
因此,选项 B) 2820 是正确答案。
#include <stdioh>
#include <mathh>
void fun2(int m)
{
int k=0,a[10];
for(int i=2;i<m;i++)
if(m%i==0)
a[k++]=i;
for(int i=0;i<k;i++)
{
printf("%d",a[i]);
if(i!=k-1)
printf(",");
}
}
void fun1(int m)
{
if(m<2)
printf("%d is a prime number",m);
for(int i=2;ii<=m;i++)
if(m%i==0)
fun2(m);
else
printf("%d is a prime number",m);
}
int main( )
{ int n;
scanf("%d",&n);
fun1(n);
return 0;
}
我给你举个简单的例子你就明白了,你可以假设n=3
然后代入这个函数,a(3)=a(2)+5;而a(2)=a(1)+5;a(1)=1
所以最后就是a(3)=1+5+5=11…
同理你可以算出a(10)=1+59=46
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)