16,552
社区成员
发帖
与我相关
我的任务
分享
Function func(n As Integer)
If n = 1 Then Return 1 Else Return func(n - 1) + 1.0 / fibonacci(n)
End Function
Function fibonacci(n As Long) As Long
If n < 4 Then Return n Else Return fibonacci(n - 1) + fibonacci(n - 2)
End Function
这样最基本的东西开始学起。并且是学会代码背后的思路,而不是代码本身。
这个我们就无法总是照顾到初学者。Function foo(n As Integer) As Single
Dim a As Integer = 1
Dim b As Integer = 2
Dim r As Single
For i = 1 To n
r += 1 / CSng(a)
b = b + a
a = b - a
Next
return r
End Function
Sub Button1_Click() ...
Dim n As Integer = Val(TextBox1.Text)
label2.Text = foo(n).ToString()
End Sub
Imports System
Imports System.IO
Imports System.Windows
Module Program
Sub Main()
Dim func As New Func(Of Integer, Double)(Function(n As Integer)
If n = 1 Then Return 1 Else Return func(n - 1) + 1.0 / fibonacci(n)
End Function)
For i = 1 To 12
Console.WriteLine("func({0})={1}", i, func(i))
Next
Console.WriteLine("按任意键退出.....")
Console.ReadKey()
End Sub
Function fibonacci(n As Long) As Long
If n < 4 Then Return n Else Return fibonacci(n - 1) + fibonacci(n - 2)
End Function
End Module
同时这里仍然是使用了两种函数定义技术。
当然初学者可能只需要会写:Imports System
Imports System.IO
Imports System.Windows
Module Program
Sub Main()
For i = 1 To 12
Console.WriteLine("func({0})={1}", i, func(i))
Next
Console.WriteLine("按任意键退出.....")
Console.ReadKey()
End Sub
Function func(n As Integer)
If n = 1 Then Return 1 Else Return func(n - 1) + 1.0 / fibonacci(n)
End Function
Function fibonacci(n As Long) As Long
If n < 4 Then Return n Else Return fibonacci(n - 1) + fibonacci(n - 2)
End Function
End Module
回到开头,其实初学者只需要这样学会基本的函数概念。但是编程“设计时”是从需求出发的,不同的需求就有不同的形式。我不是初学者,所以我也就无法总是写成跟你一样的函数代码。就从历史和对 windows 系统普通的企业级应用程序的早期贡献来说,vb 远远大于 c 语言。使用 vb 的高级程序员如果遇到“底层操作”问题,直接嵌入汇编来解决。而使用 c++ 的高级程序员则是嵌入 c 语言代码来解决。vb 的功能很强,以为开发效率高(而不是运行效率最高)而闻名。只是最近20年逐步显得“被过时”了。
Function fibonacci(n As Long) As Long
If n < 4 Then
fibonacci = n
Else
fibonacci = fibonacci(n - 1) + fibonacci(n - 2)
End If
End Function