如果我取消注释应该舍binet变量的程序代码行之一,则我试图舍入以下公式。

返回值将强制转换为int,这将截断float,但在这种情况下不推荐使用。

#if os(macOS) || os(iOS)
import Darwin
#elseif os(Linux) || CYGWIN
import Glibc
#endif

func fibFormula(_ n: Int) -> Int {
  var binet = pow((pow(5, 0.5) + 1) / 2, Float(n)) / pow(5, 0.5)
  // binet = round(binet)
  // binet.round();
  return Int(binet)
}

print(fibFormula(5)) // Should output 5

错误:

Stack dump:
0.  Program arguments: /usr/bin/swift -frontend -interpret fib.swift -disable-objc-interop -color-diagnostics -module-name fib -- 5 
/usr/bin/swift(+0x42e1b54)[0x55f476d0bb54]
/usr/bin/swift(+0x42df93e)[0x55f476d0993e]
/usr/bin/swift(+0x42e1d12)[0x55f476d0bd12]
/usr/lib/libpthread.so.0(+0x13d00)[0x7fdf098bfd00]
[0x7fdf099243fa]
[0x7fdf099241ea]
/usr/bin/swift(+0xd7f095)[0x55f4737a9095]
/usr/bin/swift(+0xd82fe0)[0x55f4737acfe0]
/usr/bin/swift(+0x607d13)[0x55f473031d13]
/usr/bin/swift(+0x5df088)[0x55f473009088]
/usr/bin/swift(+0x5da4c2)[0x55f4730044c2]
/usr/bin/swift(+0x58bea1)[0x55f472fb5ea1]
/usr/lib/libc.so.6(__libc_start_main+0xf3)[0x7fdf090f7ee3]
/usr/bin/swift(+0x58a2be)[0x55f472fb42be]
Segmentation fault (core dumped)

谁能帮助我解决此错误? 我是新手,我正在使用Linux。

编辑:当我在沙盒中尝试代码时,可以使用round函数。 也许这是Glibc问题?

公式的可读性更高(方法也不同,结果相同):

import Glibc
func fibFormula2(_ n: Int) -> Int {
  let sqrt5 = sqrt(5)
  let phi = (sqrt5 + 1) / 2
  let binet = pow(phi, Double(n)) / sqrt5
  return Int(round(binet))
}
print(fibFormula2(5)) // Should output 5

  ask by A1rPun translate from so

本文未有回复,本站智能推荐:

2回复

关闭文本文件导致分段错误和Linux下的`glibc检测`在C ++中

我有一个日志类,该类包含一个定义为: ofstream logfile和一个互斥锁的流,以确保每次只有一个线程写入该文件(该程序是多线程的)。 该类定义为: 构造函数是: 析构函数是: 和: 在某些调用析构函数的时候,它无法执行行logfile.close();
1回复

Debian上的Visual Studio代码分段错误

我在Debian x64 VM中下载并提取了VS Code,并尝试运行它。 它抱怨缺少glibc库(我有2.13,它需要2.15)。 我按照以下步骤获得了Ubuntu DEB。 使用这些,VS Code在运行时会引发分段错误。 gdb告诉我: 为什么Visual Studio C
1回复

更新glibc之后:分段错误(核心已转储)

我一直在使用centos 6.5。 在使用yum更新我的glibc之后。 我发现我的“ yum”命令以及我的“ python”命令将引发以下错误: 我已经厌倦了其他shell命令,例如:ls ll ln rm mv等。这些命令正常工作。 当我检查我的libc链接时,结果如下:
1回复

共享库中的分段错误是否会导致另一个使用该库的进程出现分段错误?

今天早上我遇到了一个奇怪的用户主目录权限问题。 我正在运行 CentOS 6.9。 这导致诸如ls -和su user失败。 在同一秒内,在这些分段错误之一期间,另一个进程 ( slurmctld ) 在同一库中出现分段错误。 这是来自/var/log/messages的相关模糊。 现在我无法对
4回复

glibc检测到错误

有人可以帮我弄清楚这个错误信息吗? 这行特别说明什么? 另外,在使用gdb查看核心转储时,我得到以下消息: 在gdb中输入命令“ frame 15”后,我得到: 谁能帮我解决这个问题? 非常感谢大家。
1回复

Tensorflow-获取分段错误(核心转储)错误

我已经在Anaconda2-> Python 2.7中安装了tensorflow 0.10。 作业系统:RHEL6.8 尝试运行时出现错误提示 现在我得到了另一个错误: 分段故障(核心已转储)
1回复

未知的段错误 - 带有简单的可复制示例

我有这个简单的代码,它导致 initstate_r 中的段错误: 如果删除int *test[8]行,它不会产生段错误。 它似乎不会在大多数 linux 系统上导致段错误,但它会在 windows gcc 的 ubuntu linux 子系统上引起(或者这可能只是运气)? 我对 initst
3回复

细分错误-不同的glib-c版本可以做类似的事情吗?

我在内存分配/释放方面遇到了一些麻烦。 在“ 64位计算机”上,我运行了一些不会给我任何错误的C代码。 如果我在32位计算机上运行相同的代码(重新编译后,会发现),那么我会遇到分段错误问题。 这是我的glib-c版本: 包装:libc6 新增功能:是状态:已安装自动安