MATLAB算法技巧和实现斐波那契数列的解决思路

 更新时间:2022年12月16日 11:18:03   作者:KANLON  
这篇文章主要介绍了MATLAB算法技巧和实现斐波那契数列,这篇主要说一下自己在算法设计课上用matlab做的两道算法题,题目解起来都比较简单,但是需要些技巧,需要的朋友可以参考下

MATLAB算法技巧和实现斐波那契数列

这篇博客主要说一下自己在算法设计课上用matlab做的两道算法题,题目解起来都比较简单,但是需要些技巧。

  • 公倍数的应用
  • 斐波那契数列的应用

题目要求

题目一:公倍数的应用

  心里想好一个1~100之间的整数x,将它分别除以3,5,7并得到3个余数。把这三个余数输入计算机,计算机能马上猜出这个数

题目二:斐波那契数列的应用

  斐波那契数列有如下特点:a1,a2已知 a(n)=a(n-1)+a(n-2) n>=3
  例题:楼梯上有n阶台阶,上楼时可以一步上1阶,也可以一步上2阶,编写算法计算共有多少种不同的上楼梯方法

解题思路

问题一,问题一可以将该数转换为d=70*a+21*b+15*c的乘积,主要是利用了他们的公倍数性质。

详细数学模型解释:
1)不难理解当s=u+3*v+3*w时,s除以3的余数与u除以3的余数是一样的。
2)对s=cu+3*v+3*w,当c除以3余数为1的数时, s除以3的余数与u除以3的余数也是一样的。证明如下:c 除以 3余数为1,记c=3*k+1,则s=u+3*k*u+3*v+3*w,由1)的结论,上述结论正确。记a,b,c分别为所猜数据d除以3,5,7后的余数,则d=70*a+21*b+15*c。为问题的数学模型,其中70称作a的系数,21称作b的系数,15称作c的系数。

问题二,就单纯是递归问题,编者对于递归也不太熟悉,正在逐步探索中。

数学模型:
此问题如果按照习惯,从前向后思考,也就是从第一阶开始,考虑怎么样走到第二阶、第三阶、第四阶……,则很难找出问题的规律;而反过来先思考“到第n阶有哪几种情况?”,答案就简单了,只有两种情况:
1) 从第n-1阶到第n阶;
2) 从第n-2阶到第n阶。
记n阶台阶的走法数为f(n),则
f(n)= 1 n=1
f(n)=2 n=2
f(n-1)+f(n-2) n>2

代码实现

主文件:main.m

%made by Canlong
%%
%编写算法完成下面给余猜谜的游戏
%心里想好一个1~100之间的整数x,将它分别除以3,5,7并得到3个余数。把这三个余数输入计算机,计算机能马上猜出这个数。
%方法一:穷举法
disp('方法一:穷举法')
num1 = input('请输入第一个数:');
num2 = input('请输入第二个数:');
num3 = input('请输入第三个数:'); 
for i=1:100
    if rem(i,3)==num1 && rem(i,5)==num2 && rem(i,7)==num3  
       fprintf('该数为:%d \n',i); 
    end
end

%%
%方法二,建模.
disp('方法二,建模.');
num1 = input('请输入第一个数:');
num2 = input('请输入第二个数:');
num3 = input('请输入第三个数:'); 
d=70*num1+21*num2+15*num3;
while d>105
   d = d-105 ;
end
fprintf('该数为:%d \n',d);

%%
%斐波那契数列的应用
%斐波那契数列有如下特点:a1,a2已知  a(n)=a(n-1)+a(n-2)  n>=3
%例题:楼梯上有n阶台阶,上楼时可以一步上1阶,也可以一步上2阶,编写算法计算共有多少种不同的上楼梯方法
%楼梯阶数
n=10;
disp('如果楼梯阶数为10,上楼梯的方法数,解得:');
fprintf('f(%d)为:%d \n',n,f(n));


函数文件:f.m

%输入n为阶梯数,a为返回的阶梯数
%made by Canlong
function a=f(n)
    if n==1
         a=1;
         return;
    end
    if n==2
         a=2;
         return
    else
         a=f(n-1)+f(n-2);
         return
    end
end

运行结果

在MATLAB R2015b软件下运行得到:

这里写图片描述

总结

  太久没用matlab写代码了,对于matlab很多语法很多都不熟悉了,写到函数那里还以为return 数值会直接返回数值,原来matlab的函数,是通过某个变量来返回值的,不能直接return 数值,如function a=f(n)中的a就是用来接受返回数值的,要返回数值的函数一定要对a进行赋值。这一点上与java等语言不太类似。

到此这篇关于MATLAB算法技巧和实现斐波那契数列的文章就介绍到这了,更多相关MATLAB斐波那契数列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言中实现自定义数据类型的输入输出的方法和技巧

    C语言中实现自定义数据类型的输入输出的方法和技巧

    在 C 语言中,除了基本的数据类型(如整型、浮点型、字符型等),我们还经常需要自定义数据类型来满足特定的编程需求,所以本文给大家介绍了C语言中实现自定义数据类型的输入输出的方法和技巧,需要的朋友可以参考下
    2024-07-07
  • C语言数据结构之双链表&循环链表&静态链表详解

    C语言数据结构之双链表&循环链表&静态链表详解

    这篇文章主要为大家详细介绍了C语言数据结构中双链表&循环链表&静态链表的原理与使用,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-09-09
  • c++ sqlite3如何利用事务(BEGIN;COMMIT;)批量操作

    c++ sqlite3如何利用事务(BEGIN;COMMIT;)批量操作

    这篇文章主要介绍了c++ sqlite3如何利用事务(BEGIN;COMMIT;)批量操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • C/C++ Qt 数据库与TableView实现多组件联动

    C/C++ Qt 数据库与TableView实现多组件联动

    Qt 数据库组件与TableView组件实现联动效果,本文通过案例给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-12-12
  • C/C++ Qt Tree与Tab组件实现分页菜单功能

    C/C++ Qt Tree与Tab组件实现分页菜单功能

    这篇文章主要介绍了C/C++ Qt Tree与Tab组件实现分页菜单功能,实现一个类似于树形菜单栏的功能,当用户点击菜单栏中的选项时则会跳转到不同的页面上,本文简单给大家分享实现代码,感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • C++中的类模板详解及示例

    C++中的类模板详解及示例

    我们在定义函数时,可以通过定义函数模板,来简化一些功能相同而数据类型不同的函数的定义和调用过程
    2013-10-10
  • c++二叉树的几种遍历算法

    c++二叉树的几种遍历算法

    c++二叉树的几种遍历算法,需要的朋友可以参考一下
    2013-02-02
  • C语言每日练习之冒泡排序

    C语言每日练习之冒泡排序

    这篇文章主要介绍了C语言冒泡排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11
  • C语言详解判断相同树案例分析

    C语言详解判断相同树案例分析

    这篇文章主要介绍了用C语言检查两棵树是否相同,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2022-04-04
  • C++ 单例模式的几种实现方式研究

    C++ 单例模式的几种实现方式研究

    单例模式,可以说设计模式中最常应用的一种模式了,据说也是面试官最喜欢的题目。但是如果没有学过设计模式的人,可能不会想到要去应用单例模式,面对单例模式适用的情况
    2019-01-01

最新评论