【C语言】函数递归问题,题目见图片,答案为什么是D?求解!为什么是倒着输出的?!

【C语言】函数递归问题,题目见图片,答案为什么是D?求解!为什么是倒着输出的?!,第1张

递归函数式自己调用自己,那么那个函数会一直执行到某个特定满足的条件的时候,才会从里面忘外面返回啊

比如就是f(f(f(3)));

进去之后,是从最里层的函数返回吧,那么就是倒着了

如果用再具体一点,就是堆栈的先进后出了,上一级的函数的东西都在底下,只有最后一层的在栈顶

考虑递归问题要从最终结果考虑

换句话说,7的值传入函数,不断调用自身,假设调用n次

第n次一定会是等于0或1的情况出现,此种情况下会返回3。

由于7是奇数,所以第n次一定是1被传入函数。

考虑这完第n次,小于n的情况下第一句 if(x==0||x==1) return 3;就没有了意义。

n-1次时,由于传入是1,返回的是3,所以p=x-fun(x-2)=3-fun(3-2),说明x=3,说明上一次传入的是3,而本次返回的是p=3-3=0

n-2次时,由于传入的是3,所以p=5-fun(5-2)=5-0=5,同理得X=5,而本次返回值为5

n-3次时,由于传入的是5,所以p=7-fun(7-2)=7-5=2,得X=7,所以这就是第1次调用,返回的是2

所以这个有n-3=1得n=4,函数一共调用了4次,最后返回的就是n-3次的返回值2

递归函数里不要

f(n,m) 调用 f(n,m) 如果 n,m不变

就是死循环,没有完了。

除非有专用的其他FLAG或数值管理。

你设的停止条件是 n<=1 m<=2

但是 f(n,m) 调用 f(n,m+1)

n没有变小 m越变越大,也是没有完了。

不知道你要算什么。如果是算次方的话用这个:

int f(int n,int m)

{

cout << "得出 f("<< n <<")";

cout << "得出 f2("<< m <<")";

if(m <= 0)

{

cout << "OK 1\n" ;

return (1);

}

else

{

cout << " f("<< n <<")";

cout << " f("<< n+1 <<")\n";

cout << " f("<< m <<")";

cout << " f("<< m+1 <<")\n";

// return (f(n,m)f(n,m+1));

return f(n, m-1)n;

}

}

输入 2 4 返回 16

数列公式: an = N^M

a0 = 1

an = a(n-1) N

算 M 次乘法。

# include <stdioh>

int hex(unsigned long int x, char a);

int main()

{

char a[9] = {0};

int n;

unsigned long int x;

scanf("%lu",&x);

n=hex(x,a);

printf("n=%d\n",n);

puts(a);

return 0;

}

int hex(unsigned long int x, char a)

{

char t[]="0123456789ABCDEF";

int n;

if(x<16)

{

a[0]=t[x];

return 1;

}

n=hex(x/16,a);

a[n]=t[x%16] ;

return 1+n ;// 这里为什么要是1+n ?

}

----------------你的代码不对-------------------我改了一下!

1+n就是 返回高位的位置比如 2048 那么应该就是 800

分析 16进来

if(x<16)

{

a[0]=t[x];

return 1;

}

第一次x=2048不执行

n=hex(x/16,a);

if(x<16)

{

a[0]=t[x];

return 1;

}

第二次x=128不执行

n=hex(x/16,a);

if(x<16)

{

a[0]=t[x];

return 1;

}

第三次x=8 a[0]=8;返回1

那么到第二次也就是128的这次 a[n]=t[x%16] ;n=1;结束后a=“80”

返回的是2 n+1啊

到2048的这次也就是第一次a[n]=t[x%16] n=2 结束后 a=“800”

最后返回2+1 就是3

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

原文地址:https://54852.com/langs/11677353.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存