gpt4 book ai didi

c - C 中的欧拉递归算法

转载 作者:行者123 更新时间:2023-11-30 17:26:26 26 4
gpt4 key购买 nike

这几天我一直在尝试解决有关欧拉函数的问题。我必须想出一个像这样工作的:

float f_euler(int n)
f_euler(0)=2
f_euler(1)=2+ (2/2)=3
f_euler(2)=2+ 2/(2+ 3/3)= 2.6666…
f_euler(5)=2+ 2/(2+ 3/(3+ 4/(4+ 5/(5+6/6)))))= 2.7184…

等等...

这段代码是C语言的。

拜托!如果有人帮助我,我真的很高兴,我很绝望! D:

谢谢:)

问题1.1:

我终于制定了这个算法,但我不确定它是否有效:

f(n,i):

  • 如果 i=n,则 i+1
  • 如果 i=0 && n=0,则为 2
  • 2+(2/(f(i+1)) 如果 i=0 && n>0
  • f((i+1)+((i+2)/f(i+1))) 如果 i>0

抱歉,如果我没有清楚地解释自己,但我是这个网站的新手。

谢谢大家!

最佳答案

从编程的角度来看,我认为你正在倒退。与其向内递归,不如考虑从底部开始向上计算。从你的例子开始:

float f_euler(int n)
f_euler(0)=2
f_euler(1)=2+ (2/2)=3
f_euler(2)=2+ 2/(2+ 3/3)= 2.6666…
f_euler(5)=2+ 2/(2+ 3/(3+ 4/(4+ 5/(5+6/6)))))= 2.7184…

我们可以将f_euler(5)的步骤重写为一系列更新

val = 6
val = 5 + 6/val
val = 4 + 5/val
val = 3 + 4/val
val = 2 + 3/val
val = 1 + 2/val

从这里应该更清楚模式以及它应该如何转换为循环代表。

请注意,最后一行应该是2 + 2/val,但您可以在返回之前添加另一个单位;这更清楚地显示了循环结构。

关于c - C 中的欧拉递归算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26804903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com