plugins:Swift-BigInt 计算 斐波那契数列

ops/2024/9/23 7:00:59/

Swift-BigInt 是 Swift 5 的轻量级易于使用的任意精度算术库。
它支持大多数常见数学运算符的整数(BInt)和分数(BDouble)。 还实现了优化的数学函数,例如阶乘或gcd,并可通过 BIntMath 访问。

计算 斐波那契数列(Fibonacci sequence),不受长整型位数限制。

从 https://codeload.github.com/mkrd/Swift-BigInt/zip/refs/heads/master

下载 Swift-BigInt-master.zip 解压后请看 Swift-BigInt-master/docs/index.html

cd D:\Swift\test
mkdir fibonacci
cd fibonacci
swift package init --type executable
Creating executable package: fibonacci
Creating Package.swift
Creating .gitignore
Creating Sources/
Creating Sources\main.swift
---

编写  Sources\main.swift  如下

// The Swift Programming Language
// file:///D:/Swift/test/Swift-BigInt-master/docs/index.html
import Foundation
import BigNumbervar i:Int = 0
if CommandLine.arguments.count > 1 {let str = CommandLine.arguments[1]let number = NumberFormatter().number(from: str)i = number!.intValue
} else {print(" usage: fibonacci.exe n ")exit(0)
}
// 计算 斐波那契数列(Fibonacci sequence)
func fib(n: Int) -> BInt {if n <= 0 { return 0 }   var x: BInt = 0, y: BInt = 1for _ in 1..<n {(x, y) = (y, y + x)}return y
}
// 调用示例
print("fib(\(i))=", fib(n:i))

编写 fibonacci\Package.swift  如下

// swift-tools-version: 5.10
// The swift-tools-version declares the minimum version of Swift required to build this package.import PackageDescriptionlet package = Package(name: "fibonacci",//products: [ ],dependencies: [.package(url: "https://github.com/mkrd/Swift-BigInt.git", branch: "master")],targets: [// Targets are the basic building blocks of a package, defining a module or a test suite.// Targets can depend on other targets in this package and products from dependencies..executableTarget(name: "fibonacci",dependencies: [ ],plugins: [.plugin(name: "BigNumber", package: "Swift-BigInt"),]),]
)

cd fibonacci
编译当前包及其依赖项:
swift build

D:\Swift\test\fibonacci>swift build
Building for debugging...
[13/13] Linking D:\Swift\test\fibonacci\.build\x86_64-unknown-windows-msvc\debug\fibonacci.exe
Build complete! (28.21s)
warning: unable to create symbolic link at D:\Swift\test\fibonacci\.build\debug: 

cd D:\Swift\test\fibonacci\.build\x86_64-unknown-windows-msvc\debug\
运行 fibonacci.exe 200
fib(200)= 280571172992510140037611932413038677189525
运行 fibonacci.exe 1000
fib(1000)= ......

用 python 校验,以上结果正确:

python fibonacci.py 200

fib1(200)= 280571172992510140037611932413038677189525

这是本人练习笔记,仅供同学参考。

参阅:全面掌握 Swift 包依赖管理工具 —— 命令行、Manifest API、Xcode、二进制包、集合、插件


http://www.ppmy.cn/ops/2567.html

相关文章

本地环境连接虚拟机中的数据库,虚拟机的防火墙允许从本地主机访问虚拟机的MySQL端口

要让本地环境可以访问虚拟机中的数据库&#xff0c;您可以按照以下步骤进行设置&#xff1a; 配置虚拟机网络&#xff1a; 确保虚拟机的网络设置为桥接模式&#xff0c;这样虚拟机可以获得与本地网络相同的IP地址段。 查看虚拟机IP地址&#xff1a; 在虚拟机中运行以下命令来查…

学习Python先从了解Python开始

Python是一种高级编程语言&#xff0c;它的语法简洁易读&#xff0c;功能强大&#xff0c;应用领域广泛。Python不仅适用于数据科学、机器学习、Web开发等领域&#xff0c;还可以用于自动化脚本编写、游戏开发等。在本文中&#xff0c;我们将探讨Python的特点、应用领域以及未来…

【学习笔记PPT摘录】lan.289.24.4-15

1.纪念品分组.双指针-01 #include <bits/stdc.h> using namespace std;int A[40000];// 纪念品价值均衡// 把购来的纪念品进行分组 之和不超过整数 w// 每组只能有两个纪念品 希望分组的数目要少// 贪心的策略就是 每个较大的数找到一个 最大的较小的数使其能够小于w// n…

ubuntu23.10.1 php8.2安装

1、更新镜像源 apt update2、安装php apt install php php-fpm php-mysql其他扩展包&#xff0c;在后面加个-可以查看&#xff0c;选择安装,我这里是php8.2版本 apt-get install php8.2- 2.1php与nginx结合 PHP-FPM的配置文件位于/etc/php/{PHP版本}/fpm/pool.d/www.conf;…

第十一章数据仓库和商务智能10分

【数据仓库-后端&#xff0c;商务智能-前端】 基本算法&#xff1a;关联关系&#xff08;牵手-谈恋爱&#xff09;&#xff0c;集群关系&#xff08;杭州人爱吃酸甜口&#xff09;&#xff0c;决策树&#xff0c;线性回归&#xff0c;贝叶斯&#xff0c;神经网络&#xff0c;时…

第17天:信息打点-语言框架开发组件FastJsonShiroLog4jSpringBoot等

第十七天 本课意义 1.CMS识别到后期漏洞利用和代码审计 2.开发框架识别到后期漏洞利用和代码审计 3.开发组件识别到后期漏洞利用和代码审计 一、CMS指纹识别-不出网程序识别 1.概念 CMS指纹识别一般能识别到的都是以PHP语言开发的网页为主&#xff0c;其他语言开发的网页识…

使用npm时出现的问题们

npm ERR! code CERT_HAS_EXPIRED&#xff1a;解决证书过期问题 禁用SSL&#xff1a;虽然不推荐&#xff0c;但您可以暂时禁用SSL验证来解决这个问题。但请注意&#xff0c;这会降低安全性。您可以通过设置npm的 strict-ssl 选项为 false 来实现&#xff1a; npm config set st…

PCB工艺规范及PCB设计安规原则

一、目的 规范产品的PCB工艺设计&#xff0c;规定PCB工艺设计的相关参数&#xff0c;使得PCB的设计满足可生产性、可测试性、安规、EMC、EMI等的技术规范要求&#xff0c;在产品设计过程中构建产品的工艺、技术、质量、成本优势。 二、适用范围 本规范适用于所有电了产品的PCB工…