一 递归的深度学习及其应用
/*
题1--50个台阶,每次上一个或者两个台阶,问总共有多少种可能?
分析:f(50) = f(49)+f(48),第五十个台阶有可能是从第49个或者第48个台阶上来的
f(49) = f(48)+f(47),......
题2--判断一个数组是否是递增的?
题3--数字置换
题3--将十进制数转化为二进制数
注意:任意循环都可以转化为递归,而并不是所有的递归都可以转化为循环,递归的标准算法就是if-else
*/
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//题1--利用递归算法
long long go(int n)
{
if (n == 1) //终止条件
return 1;
else if (n == 2)
return 2;
else
return go(n - 1) + go(n - 2); //数学关系
}
//题1--使用循环算法,这种方法相对于递归算法要快很多
long long go2(int n)
{
long long *arr =(long long *)malloc(n*sizeof(long long));
arr[0] = 1;
arr[1] = 2;
for (int i = 2; i < n; i++)
arr[i] = arr[i - 1] + arr[i - 2];
return arr[n-1];
}
//题2--使用循环算法
void judge(int arr[], int sz)
{
for (int i = 0; i < sz - 2; i++)