java费布拉切数列前40个数_Delphi 语言基础_过程与函数

一、过程与函数主要部分

1、过程与函数的声明。

2、过程与函数的参数。

3、过程和函数的调用。

4、带有默认值参数的例程

5、例程的重载

6、例程的递归调用。

二、过程与函数的详细调用

1、过程与函数的声明

procedure 过程名();指示字;

局部声明

begin

end;

析释:过程名括号内的是形式参数列表也称为形参,形参可有可没有;指示字不是必须加的(指示字如方法允不允许重载的overload);局部声明也是可有可无的;

举例如下:

d4983af9a4e754240a29a70e2471d6f2.png生成一个菱形

①我们声明一个过程具体形式。

②我们声明一个过程内的主题(图例中是生成一个菱形)。

③我们调用已经声明的过程。

2、函数是与过程唯一不同的是函数必须指定一个返回值。

function 函数名():类型标识符(返回类型);指示字;

局部变量声明

begin

函数体语句

end;

析释:函数名括号内的是形式参数列表也称为形参,形参可有可没有;指示字不是必须加的(如方法允不允许重载);局部声明也是可有可无的;

在返回值的时候有两种语句进行表示:

1)通过对函数名进行赋值实现函数值的传递(函数名:= ‘要被返回的值’)

2)通过Result这个变量,但能否用还受编译器的命令字控制(必须有{$+}才能用) //当Result出现在赋值的右边是当前函数的递归调用。

第一种情况举例如下:

912cfc0b73f030da091013eae0530994.png

factorial:=f 就是用函数名的方式把把返回值传回去

第二种情况举例如下:

783b823f773bb19f7a959f5c7b82ca9f.png

用result的方式把返回值传回去。

3、实参与形参的区别,如图所示

37ab6ffebbc7c9a906d027c7954cad65.png

如图所示我们声明的时候声明的参数是形参。我们调用的时候我们使用的参数叫实参,实参可以是变量、可以是常量,也可以是调用函数的结果值。

4、形式参数传递的方式,分为4种不同的接收类型

值类型:上图中参数都是该类型

变量参数:参数的前面加一个var,按照地址进行传递(传的是地址),一旦对例程中对变量赋值改变了,实参调用发现数据会改变。如图所示

3720afd12f315af43e972e564deed56e.png

常量参数:在定义的时候加一个保留字const,在过程体中不允许改变。

外部参数(输出参数):参数前加一个out,表示输出,一旦设置了这个输出,在方法体中一定要对变量赋值。赋值了外面调用才能接受数据。

5、带有默认值参数的方法(在定义函数和过程中,声明参数后面带一个=,这就是赋值)

6、例程或方法的重载,方法名称相同,参数类型或参数个数不同才能重载,如果都相同不能重载。如图:

2d2ae949d3357187cd93733f232f0336.png

图中有两个调用,分别是整数和小数,调用中会根据参数的类型来确定调用哪个方法。

7、递归方法是简单,但效率不高,做一些复杂的算法容易些。如图所示做一个阶乘的例子

a04c4f1e5890bb63f6282b528229c456.png

为了不能无限次的调用自己,设置一个禁止调用自己的条件。

8、做一个费布拉切数列,也称黄金分割数列(后一个数是前两个数相加:1 ,1 ,2,3,5,6,13,21.........)我们要找数列中的一个位置的数是多少,用递归方法。代码如下:

function fibonacci(n:integer):int64;

begin

case n of

1,2:result:=1;

else

result:=fibonacci(n-1)+fibonacci(n-2);

end;

end;

begin

writeln(fibonacci(9)) ;

readln;

end.

附一:图一生成一个菱形代码如下:

program Project1;

{$APPTYPE CONSOLE}

uses

SysUtils;

procedure diamond(n:integer;c:char);

var

i,j:integer;

begin

for i:=1 to n do begin

write(' ':n-i+1);

for j:=1 to i*2-1 do

write(c:1);

WriteLn;

end;

for i:=n-1 downto 1 do begin

write (' ':n-i+1);

for j:=i*2-1 downto 1 do

write(c:1);

writeln;

end;

end;

begin

diamond(4,'*');

readln;

end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值