1、函数的定义
- 函数的定义:封装一段可执行的代码块
- 为什么要使用函数?
原因:
-
如果重复执行某段代码,就要重复写很多次
-
重复代码多了不容易阅读,管理和维护
-
函数的基本结构 -若要返回同类型的值,可以使用数组,返回不同类型的值可以使用 out参数 ref参数。
注意---错误写法:return a,b,c这样的写法是错误的!
- 方法中的参数数组
2、函数的调用
static表示修饰符,还有很多修饰符,这里static表示静态方法,这里还会涉及到更多的静态方法。
3、函数的形式参数
4、函数的递归
1.函数递归:递归的本质就是自己调用自己。
2.递归的定义:递归本身就是一个循环。
3.递归的思想:越来越接近已知值。
4.递归的总结:
1)通过自己调用自己把复杂的逻辑简单化,可以求得最终结果;
2)递归要有开始条件,也要有一个结束条件;
3)有一种递归的逻辑运算。
例题1、斐波拉契数列,输入n求出n项的斐波拉契数列
4、函数的重载
例题一、求最大篮球的单词数
给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "basketball"(篮球)。
字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "basketball"。 示例 1:
输入:text = "saltaebbolko" 输出:1
示例 2:
输入:text = "saltaebbolkoxballketsba" 输出:2
示例 3:
输入:text = "english" 输出:0
提示:
1 <= text.length <= 10^4 text 全部由小写英文字母组成
方法一、
char[] text = Console.ReadLine().ToCharArray();
char[] word = { 'a', 'b', 'l', 's', 'k', 'e', 't' };
int[] group = new int[26];
for (int i = 0; i < text.Length; i++)
{
group[text[i] - 'a']++;
}
int min = Int32.MaxValue;
for (int i = 0; i < word.Length; i++)
{
if (i < 3)
{
min = Math.Min(min, group[word[i] - 'a'] /2
}
else
{
min = Math.Min(min, group[word[i] - 'a']);
}
}
Console.WriteLine(min);
方法二、
//利用下标记录某个数字出现的次数
string str = Console.ReadLine();
//每个字母出现的次数我们把它存到数组中
int[] num = new int[7];//'a', 'b', 'l', 's', 'k', 'e', 't'
//遍历字符串 把每个字母出现的次数放到对应的下标里
for (int i = 0; i < str.Length; i++)
{
if (str[i] == 'a')
{
num[0]++;
}
else if (str[i] == 'b')
{
num[1]++;
}
else if (str[i] == 'l')
{
num[2]++;
}
else if (str[i] == 's')
{
num[3]++;
}
else if (str[i] == 'k')
{
num[4]++;
}
else if (str[i] == 'e')
{
num[5]++;
}
else if (str[i] == 't')
{
num[6]++;
}
}
num[0] /= 2;
num[1] /= 2;
num[2] /= 2;
//求数组中的最小值
int Minnum = num.Min();
Console.WriteLine(Minnum);
二、判断素数例题
- 测试输入:1 10 测试输出:1 2 3 5 7
- --------------------思考过程-------------------
- 函数一、判断是否为素数
- 函数二、倒序拼接为新的数组
- 遍历数组,调用函数,控制输出新的数组。
三、
- 定义一个函数Max,用来取得一个数组中的最大值
- 定义一个函数getDivisor,用来取得一个数字的所有因子,把所有因子返回
四、递归思想例题一
斐波拉契数列
- 提示:已知 1 1 2 3 5 8 13 21 34... 我们发现后面数是前两个数的和,我们称这种数列为斐波那契数列
- 题目要求:输入n,求出n项的斐波那契数列
- 例:输入4 输出 1 1 2 3
五、递归思想例题二
有关系式1 * 1+2 * 2+3 * 3+...k * k<2000,编一个程序,求出满足此关系的k的最大值,利用递归和循环解决这个问题
五、递归思想例题三
猴子摘桃问题