C语言--(六)递归Recursion(点灯笼)

写递归函数的核心思想:

1找到函数关系:  f(n) = f(n-1) + 2

2找到出口:  f(1) =1

递归数列

f(n) = f(n-1) + 2

f(1) =1

1 3 5 7 9

先写递归出口
 

#include<stdio.h>
#include<windows.h>

int f(int n) {
    if(n == 1) {
        return 1;
        }
    else {
        return f(n-1)+2;
    }
}

int main() {
    int num = f(6);
    printf("num = %d\n",num);
	Sleep(10000);
}
// 1 3 5 7 9 11

斐波那契数列  Fibonacci


1 1 2 3 5 8 13 31

#include<stdio.h>
#include<windows.h>

int f(int n) {
    if(n == 1) {
        return 1;
        }
    else if(n ==2) {
        return 1;
    } 
    else {
        return (f(n-1)+f(n-2));
    }
}

int main() {
    int num = f(6);
    printf("num = %d\n",num);
    Sleep(10000);
}
// 1 1 2 3 5 8 13 31
// 1 2 3 4 5 6 7  8 

所有循环都可以用递归来表示

求sum:1加到100的和

1.找出来公式  f(n) = f(n-1) + n

2.找到出口 f(1) =1

1+2+3...+100

#include<stdio.h>
#include<windows.h>

int sum(int n) {
    if(n == 1) {
        return 1;
        }
    else {
        return (sum(n-1)+n);
    } 
}

int main() {
    int num = sum(100);
    printf("num = %d\n",num);
    Sleep(10000);
}

// 应该得到5050

int  arr[] = {1,7,8,6,4,7,3}

求数组的前n项和,


1 下面是递归关系

sum(arr,n) = sum(arr,n-1) + arr[n]

2 递归出口是 sum(arr,0) = arr[0]

#include<stdio.h>
#include<windows.h>

int sum(int arr[], int  n) {
    if(n == 0) {
        return arr[0];
        }
    else {
        return (sum(arr, n-1) + arr[n]);  // 这里需要写arr,而不是arr[]
    } 
}

int main() {
	int arr[9] = {9,8,7,6,5,4,3,2,1};  // 9个数
    int num = sum(arr, 8);  // 这里需要写arr,而不是arr[].需要写8而不是9,第八个数是1
    printf("num = %d\n",num);
    Sleep(10000);
    return 0;
}

// 得45

求数组前n项的最大值

1 关系:如果数组前n-1项的最大值>第n项, 最大值为arr[n],否则最大值是maxnum(arr, n-1)

2 递归出口:如果数组arr只有一项,则是这一项arr[0]

#include<stdio.h>
#include<windows.h>

int maxnum(int arr[], int n) {
	if (n == 0) {
		return arr[0];
	}
	else if (maxnum(arr, n-1) > arr[n]) {
		return maxnum(arr, n-1);
	}
	else {
		return arr[n];
	}
}

int main() {
	int arr[9] ={1,2,6,8,9,4,3,5,7};
	printf("maxnum(8)=%d\n", maxnum(arr, 2));
	Sleep(10000);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/zjc910997316/article/details/88983773
今日推荐