Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C เพื่อค้นหาเทอมที่ n ของความสัมพันธ์การเกิดซ้ำที่กำหนด


สมมติว่าเรามีตัวเลขสามตัว a, b, c และค่า n เราทำตามสูตรการเกิดซ้ำ S(n) −

  • S(1) คืนค่า a
  • S(2) คืนค่า b
  • S(3) คืนค่า c
  • S(n) ส่งกลับ S(n-1) + S(n-2) + S(n-3) สำหรับ n ทั้งหมด> 3

เราจะต้องหาเทอมที่ n โดยทำตามนี้

ดังนั้น หากอินพุตเป็น a =5, b =2, c =3, n =6 ดังนั้นเอาต์พุตจะเป็น 28 เพราะ −

  • S(6) =S(5) + S(4) + S(3)
  • S(5) =S(4) + S(3) + S(2)
  • S(4) =S(3) + S(2) + S(1) =3 + 2 + 5 =10
  • ดังนั้นตอนนี้ S(5) =10 + 3 + 2 =15
  • และ S(6) =15 + 10 + 3 =28

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

กำหนดฟังก์ชัน Solve() ซึ่งจะใช้ a, b, c, n,

  • ถ้า n เหมือนกับ 1 แล้ว:
    • คืนสินค้า
  • ถ้า n เหมือนกับ 2 แล้ว:
    • คืน b
  • ถ้า n เหมือนกับ 3 แล้ว:
    • คืนค
  • ผลตอบแทนการแก้((a, b, c, n - 1) + แก้(a, b, c, n - 2) + แก้(a, b, c, n - 3))

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <stdio.h>
int solve(int a, int b, int c, int n){
    if(n == 1)
        return a;
    if(n == 2)
        return b;
    if(n == 3)
        return c;
    return solve(a, b, c, n-1) + solve(a, b, c, n-2) + solve(a, b, c, n-3);
}
int main(){
    int a = 5, b = 2, c = 3, n = 6;
    int res = solve(a, b, c, n);
    printf("%d", res);
}

อินพุต

5, 2, 3, 6

ผลลัพธ์

28