C语言递归函数

C语言递归函数,第1张

#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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11672479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存