ਜਾਵਾ ਵਿੱਚ ਰੀਕਰਸ਼ਨ ਬਾਰੇ ਇਹ ਡੂੰਘਾਈ ਵਾਲਾ ਟਿਊਟੋਰਿਅਲ ਵਿਆਖਿਆ ਕਰਦਾ ਹੈ ਕਿ ਉਦਾਹਰਨਾਂ, ਕਿਸਮਾਂ, ਅਤੇ ਸੰਬੰਧਿਤ ਸੰਕਲਪਾਂ ਦੇ ਨਾਲ ਆਵਰਤੀ ਕੀ ਹੈ। ਇਹ ਰੀਕਰਸ਼ਨ ਬਨਾਮ ਇਟਰੇਸ਼ਨ ਨੂੰ ਵੀ ਕਵਰ ਕਰਦਾ ਹੈ:

ਜਾਵਾ ਵਿੱਚ ਸਾਡੇ ਪੁਰਾਣੇ ਟਿਊਟੋਰਿਅਲਸ ਤੋਂ, ਅਸੀਂ ਦੁਹਰਾਉਣ ਵਾਲੀ ਪਹੁੰਚ ਵੇਖੀ ਹੈ ਜਿਸ ਵਿੱਚ ਅਸੀਂ ਇੱਕ ਲੂਪ ਘੋਸ਼ਿਤ ਕਰਦੇ ਹਾਂ ਅਤੇ ਫਿਰ ਇੱਕ ਐਲੀਮੈਂਟ ਨੂੰ ਲੈ ਕੇ ਇੱਕ ਡੇਟਾ ਬਣਤਰ ਨੂੰ ਦੁਹਰਾਉਣ ਵਾਲੇ ਢੰਗ ਨਾਲ ਲੰਘਦੇ ਹਾਂ ਇੱਕ ਸਮਾਂ।

ਅਸੀਂ ਕੰਡੀਸ਼ਨਲ ਫਲੋ ਵੀ ਦੇਖਿਆ ਹੈ ਜਿੱਥੇ ਅਸੀਂ ਦੁਬਾਰਾ ਇੱਕ ਲੂਪ ਵੇਰੀਏਬਲ ਰੱਖਦੇ ਹਾਂ ਅਤੇ ਕੋਡ ਦੇ ਇੱਕ ਟੁਕੜੇ ਨੂੰ ਉਦੋਂ ਤੱਕ ਦੁਹਰਾਉਂਦੇ ਹਾਂ ਜਦੋਂ ਤੱਕ ਲੂਪ ਵੇਰੀਏਬਲ ਕੰਡੀਸ਼ਨ ਨੂੰ ਪੂਰਾ ਨਹੀਂ ਕਰਦਾ। ਜਦੋਂ ਫੰਕਸ਼ਨ ਕਾਲਾਂ ਦੀ ਗੱਲ ਆਉਂਦੀ ਹੈ, ਤਾਂ ਅਸੀਂ ਫੰਕਸ਼ਨ ਕਾਲਾਂ ਲਈ ਵੀ ਦੁਹਰਾਉਣ ਵਾਲੀ ਪਹੁੰਚ ਦੀ ਖੋਜ ਕੀਤੀ ਹੈ।

ਇਸ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ, ਅਸੀਂ ਪ੍ਰੋਗਰਾਮਿੰਗ ਲਈ ਇੱਕ ਵੱਖਰੀ ਪਹੁੰਚ ਅਰਥਾਤ ਰਿਕਰਸਿਵ ਪਹੁੰਚ ਬਾਰੇ ਚਰਚਾ ਕਰਾਂਗੇ।

ਜਾਵਾ ਵਿੱਚ ਰੀਕਰਸ਼ਨ ਕੀ ਹੈ?

ਰੀਕਰਸ਼ਨ ਇੱਕ ਪ੍ਰਕਿਰਿਆ ਹੈ ਜਿਸ ਦੁਆਰਾ ਇੱਕ ਫੰਕਸ਼ਨ ਜਾਂ ਵਿਧੀ ਆਪਣੇ ਆਪ ਨੂੰ ਬਾਰ ਬਾਰ ਕਾਲ ਕਰਦੀ ਹੈ। ਇਹ ਫੰਕਸ਼ਨ ਜਿਸ ਨੂੰ ਸਿੱਧੇ ਜਾਂ ਅਸਿੱਧੇ ਤੌਰ 'ਤੇ ਬਾਰ ਬਾਰ ਬੁਲਾਇਆ ਜਾਂਦਾ ਹੈ, ਨੂੰ "ਰਿਕਰਸਿਵ ਫੰਕਸ਼ਨ" ਕਿਹਾ ਜਾਂਦਾ ਹੈ।

ਅਸੀਂ ਆਵਰਤੀ ਨੂੰ ਸਮਝਣ ਲਈ ਕਈ ਉਦਾਹਰਣਾਂ ਦੇਖਾਂਗੇ। ਆਉ ਹੁਣ ਰੀਕਰਸ਼ਨ ਦਾ ਸੰਟੈਕਸ ਵੇਖੀਏ।

ਰੀਕਰਸ਼ਨ ਸਿੰਟੈਕਸ

ਕਿਸੇ ਵੀ ਵਿਧੀ ਜੋ ਰੀਕਰਸ਼ਨ ਨੂੰ ਲਾਗੂ ਕਰਦੀ ਹੈ ਦੇ ਦੋ ਬੁਨਿਆਦੀ ਹਿੱਸੇ ਹੁੰਦੇ ਹਨ:

  1. ਵਿਧੀ ਕਾਲ ਜੋ ਆਪਣੇ ਆਪ ਨੂੰ ਕਾਲ ਕਰ ਸਕਦੀ ਹੈ ਅਰਥਾਤ ਰਿਕਰਸਿਵ
  2. ਇੱਕ ਪੂਰਵ ਸ਼ਰਤ ਜੋ ਦੁਹਰਾਅ ਨੂੰ ਰੋਕ ਦੇਵੇਗੀ।

ਨੋਟ ਕਰੋ ਕਿ ਕਿਸੇ ਵੀ ਆਵਰਤੀ ਵਿਧੀ ਲਈ ਇੱਕ ਪੂਰਵ ਸ਼ਰਤ ਜ਼ਰੂਰੀ ਹੈ, ਜੇਕਰ ਅਸੀਂ ਨਹੀਂ ਕਰਦੇ ਤੋੜੋਆਵਰਤੀ ਤਦ ਇਹ ਬੇਅੰਤ ਚੱਲਦਾ ਰਹੇਗਾ ਅਤੇ ਨਤੀਜੇ ਵਜੋਂ ਇੱਕ ਸਟੈਕ ਓਵਰਫਲੋ ਹੋਵੇਗਾ।

ਆਵਰਤੀ ਦਾ ਆਮ ਸੰਟੈਕਸ ਇਸ ਤਰ੍ਹਾਂ ਹੈ:

methodName (T parameters…) { if (precondition == true) //precondition or base condition { return result; } return methodName (T parameters…); //recursive call } 

ਨੋਟ ਕਰੋ ਕਿ ਪੂਰਵ ਸ਼ਰਤ ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ ਅਧਾਰ ਸਥਿਤੀ. ਅਸੀਂ ਅਗਲੇ ਭਾਗ ਵਿੱਚ ਬੇਸ ਕੰਡੀਸ਼ਨ ਬਾਰੇ ਹੋਰ ਚਰਚਾ ਕਰਾਂਗੇ।

ਜਾਵਾ ਵਿੱਚ ਰੀਕਰਸ਼ਨ ਨੂੰ ਸਮਝਣਾ

ਇਸ ਭਾਗ ਵਿੱਚ, ਅਸੀਂ ਰੀਕਰਸ਼ਨ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸਮਝਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਾਂਗੇ ਅਤੇ ਦੇਖਾਂਗੇ ਕਿ ਇਹ ਕਿਵੇਂ ਵਾਪਰਦਾ ਹੈ। ਅਸੀਂ ਬੇਸ ਕੰਡੀਸ਼ਨ, ਸਟੈਕ ਓਵਰਫਲੋ ਬਾਰੇ ਸਿੱਖਾਂਗੇ, ਅਤੇ ਦੇਖਾਂਗੇ ਕਿ ਰਿਕਰਸ਼ਨ ਅਤੇ ਹੋਰ ਅਜਿਹੇ ਵੇਰਵਿਆਂ ਨਾਲ ਕਿਸੇ ਖਾਸ ਸਮੱਸਿਆ ਨੂੰ ਕਿਵੇਂ ਹੱਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

ਰੀਕਰਸ਼ਨ ਬੇਸ ਕੰਡੀਸ਼ਨ

ਆਵਰਤੀ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਲਿਖਣ ਵੇਲੇ, ਸਾਨੂੰ ਪਹਿਲਾਂ ਬੇਸ ਕੇਸ ਲਈ ਹੱਲ ਪ੍ਰਦਾਨ ਕਰੋ। ਫਿਰ ਅਸੀਂ ਛੋਟੀਆਂ ਸਮੱਸਿਆਵਾਂ ਦੇ ਰੂਪ ਵਿੱਚ ਵੱਡੀ ਸਮੱਸਿਆ ਨੂੰ ਪ੍ਰਗਟ ਕਰਦੇ ਹਾਂ।

ਇੱਕ ਉਦਾਹਰਨ ਵਜੋਂ, ਅਸੀਂ ਇੱਕ ਸੰਖਿਆ ਦੇ ਫੈਕਟੋਰੀਅਲ ਦੀ ਗਣਨਾ ਕਰਨ ਦੀ ਇੱਕ ਕਲਾਸਿਕ ਸਮੱਸਿਆ ਲੈ ਸਕਦੇ ਹਾਂ। ਇੱਕ ਸੰਖਿਆ n ਦਿੱਤੇ ਜਾਣ 'ਤੇ, ਸਾਨੂੰ n ਦੁਆਰਾ ਦਰਸਾਏ ਗਏ n ਦਾ ਇੱਕ ਫੈਕਟੋਰੀਅਲ ਲੱਭਣਾ ਹੋਵੇਗਾ!

ਆਓ ਹੁਣ ਆਵਰਤੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ n ਫੈਕਟੋਰੀਅਲ (n!) ਦੀ ਗਣਨਾ ਕਰਨ ਲਈ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਲਾਗੂ ਕਰੀਏ।

public class Main{ static int fact(int n) { if (n == 1) // base condition return 1; else return n*fact(n-1); } public static void main(String[] args) { int result = fact(10); System.out.println("10! = " + result); } }

ਆਉਟਪੁੱਟ

ਇਸ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ, ਅਸੀਂ ਦੇਖ ਸਕਦੇ ਹਾਂ ਕਿ ਕੰਡੀਸ਼ਨ (n=1) ਬੇਸ ਕੰਡੀਸ਼ਨ ਹੈ ਅਤੇ ਜਦੋਂ ਇਹ ਕੰਡੀਸ਼ਨ ਪੂਰੀ ਹੋ ਜਾਂਦੀ ਹੈ, ਫੰਕਸ਼ਨ 1 ਦਿੰਦਾ ਹੈ। ਫੰਕਸ਼ਨ ਦਾ ਦੂਜਾ ਹਿੱਸਾ ਆਵਰਤੀ ਕਾਲ ਹੈ। ਪਰ ਹਰ ਵਾਰ ਜਦੋਂ ਆਵਰਤੀ ਵਿਧੀ ਨੂੰ ਬੁਲਾਇਆ ਜਾਂਦਾ ਹੈ, n ਨੂੰ 1 ਦੁਆਰਾ ਘਟਾਇਆ ਜਾਂਦਾ ਹੈ।

ਇਸ ਤਰ੍ਹਾਂ ਅਸੀਂ ਇਹ ਸਿੱਟਾ ਕੱਢ ਸਕਦੇ ਹਾਂ ਕਿ ਅੰਤ ਵਿੱਚ n ਦਾ ਮੁੱਲ 1 ਜਾਂ 1 ਤੋਂ ਘੱਟ ਹੋ ਜਾਵੇਗਾ ਅਤੇ ਇਸ ਸਮੇਂਬਿੰਦੂ, ਵਿਧੀ 1 ਮੁੱਲ ਵਾਪਸ ਕਰੇਗੀ। ਇਹ ਅਧਾਰ ਸਥਿਤੀ ਪਹੁੰਚ ਜਾਵੇਗੀ ਅਤੇ ਫੰਕਸ਼ਨ ਬੰਦ ਹੋ ਜਾਵੇਗਾ। ਨੋਟ ਕਰੋ ਕਿ n ਦਾ ਮੁੱਲ ਉਦੋਂ ਤੱਕ ਕੁਝ ਵੀ ਹੋ ਸਕਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਇਹ ਅਧਾਰ ਸ਼ਰਤ ਨੂੰ ਸੰਤੁਸ਼ਟ ਕਰਦਾ ਹੈ।

ਆਵਰਤੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਮੱਸਿਆ ਦਾ ਹੱਲ ਕਰਨਾ

ਰਿਕਰਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਨ ਪਿੱਛੇ ਮੂਲ ਵਿਚਾਰ ਵੱਡੀ ਸਮੱਸਿਆ ਨੂੰ ਦਰਸਾਉਣਾ ਹੈ ਛੋਟੀਆਂ ਸਮੱਸਿਆਵਾਂ. ਨਾਲ ਹੀ, ਸਾਨੂੰ ਇੱਕ ਜਾਂ ਇੱਕ ਤੋਂ ਵੱਧ ਅਧਾਰ ਸ਼ਰਤਾਂ ਜੋੜਨ ਦੀ ਲੋੜ ਹੈ ਤਾਂ ਜੋ ਅਸੀਂ ਆਵਰਤੀ ਤੋਂ ਬਾਹਰ ਆ ਸਕੀਏ।

ਇਸ ਨੂੰ ਉਪਰੋਕਤ ਕਾਰਕ ਉਦਾਹਰਨ ਵਿੱਚ ਪਹਿਲਾਂ ਹੀ ਪ੍ਰਦਰਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਸੀ। ਇਸ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ, ਅਸੀਂ n ਫੈਕਟੋਰੀਅਲ (n!) ਨੂੰ ਛੋਟੇ ਮੁੱਲਾਂ ਦੇ ਰੂਪ ਵਿੱਚ ਪ੍ਰਗਟ ਕੀਤਾ ਹੈ ਅਤੇ ਇੱਕ ਬੇਸ ਕੰਡੀਸ਼ਨ (n =1) ਰੱਖੀ ਹੈ ਤਾਂ ਜੋ ਜਦੋਂ n 1 ਤੱਕ ਪਹੁੰਚ ਜਾਵੇ, ਅਸੀਂ ਰਿਕਰਸਿਵ ਵਿਧੀ ਨੂੰ ਛੱਡ ਸਕਦੇ ਹਾਂ।

ਰੀਕਰਸ਼ਨ ਵਿੱਚ ਸਟੈਕ ਓਵਰਫਲੋ ਗਲਤੀ

ਅਸੀਂ ਜਾਣਦੇ ਹਾਂ ਕਿ ਜਦੋਂ ਕੋਈ ਵਿਧੀ ਜਾਂ ਫੰਕਸ਼ਨ ਕਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਫੰਕਸ਼ਨ ਦੀ ਸਥਿਤੀ ਸਟੈਕ 'ਤੇ ਸਟੋਰ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਅਤੇ ਫੰਕਸ਼ਨ ਦੇ ਵਾਪਸ ਆਉਣ 'ਤੇ ਮੁੜ ਪ੍ਰਾਪਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਸਟੈਕ ਦੀ ਵਰਤੋਂ ਆਵਰਤੀ ਵਿਧੀ ਲਈ ਵੀ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।

ਪਰ ਆਵਰਤੀ ਦੇ ਮਾਮਲੇ ਵਿੱਚ, ਇੱਕ ਸਮੱਸਿਆ ਹੋ ਸਕਦੀ ਹੈ ਜੇਕਰ ਅਸੀਂ ਅਧਾਰ ਸਥਿਤੀ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਨਹੀਂ ਕਰਦੇ ਜਾਂ ਜਦੋਂ ਅਧਾਰ ਸਥਿਤੀ ਕਿਸੇ ਤਰ੍ਹਾਂ ਪਹੁੰਚੀ ਜਾਂ ਚਲਾਈ ਨਹੀਂ ਜਾਂਦੀ ਹੈ। ਜੇਕਰ ਇਹ ਸਥਿਤੀ ਵਾਪਰਦੀ ਹੈ ਤਾਂ ਸਟੈਕ ਓਵਰਫਲੋ ਪੈਦਾ ਹੋ ਸਕਦਾ ਹੈ।

ਆਓ ਫੈਕਟੋਰੀਅਲ ਨੋਟੇਸ਼ਨ ਦੀ ਹੇਠਾਂ ਦਿੱਤੀ ਉਦਾਹਰਣ 'ਤੇ ਵਿਚਾਰ ਕਰੀਏ।

ਇੱਥੇ ਅਸੀਂ ਇੱਕ ਗਲਤ ਅਧਾਰ ਸ਼ਰਤ ਦਿੱਤੀ ਹੈ, n==100।

public class Main { static int fact(int n) { if (n == 100) // base condition resulting in stack overflow return 1; else return n*fact(n-1); } public static void main(String[] args) { int result = fact(10); System.out.println("10! = " + result); } }

ਇਸ ਲਈ ਜਦੋਂ n > 100 ਵਿਧੀ 1 ਵਾਪਸ ਕਰੇਗੀ ਪਰ ਆਵਰਤੀ ਬੰਦ ਨਹੀਂ ਹੋਵੇਗੀ। n ਦਾ ਮੁੱਲ ਉੱਥੇ ਵਾਂਗ ਹੀ ਅਨਿਸ਼ਚਿਤ ਸਮੇਂ ਤੱਕ ਘਟਦਾ ਰਹੇਗਾਇਸ ਨੂੰ ਰੋਕਣ ਲਈ ਕੋਈ ਹੋਰ ਸ਼ਰਤ ਨਹੀਂ ਹੈ। ਇਹ ਉਦੋਂ ਤੱਕ ਜਾਰੀ ਰਹੇਗਾ ਜਦੋਂ ਤੱਕ ਸਟੈਕ ਓਵਰਫਲੋ ਨਹੀਂ ਹੋ ਜਾਂਦਾ।

ਇੱਕ ਹੋਰ ਮਾਮਲਾ ਉਦੋਂ ਹੋਵੇਗਾ ਜਦੋਂ n 100. ਇਸ ਕੇਸ ਵਿੱਚ, ਨਾਲ ਹੀ ਢੰਗ ਕਦੇ ਵੀ ਬੇਸ ਕੰਡੀਸ਼ਨ ਨੂੰ ਲਾਗੂ ਨਹੀਂ ਕਰੇਗਾ ਅਤੇ ਨਤੀਜੇ ਵਜੋਂ ਇੱਕ ਸਟੈਕ ਓਵਰਫਲੋ ਹੋਵੇਗਾ।

ਜਾਵਾ ਵਿੱਚ ਰੀਕਰਸ਼ਨ ਉਦਾਹਰਨਾਂ

ਇਸ ਭਾਗ ਵਿੱਚ, ਅਸੀਂ ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਉਦਾਹਰਣਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲਾਗੂ ਕਰਾਂਗੇ ਰੀਕਰਸ਼ਨ।

#1) ਫਿਬੋਨਾਚੀ ਸੀਰੀਜ਼ ਰੀਕਰਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ

ਫਿਬੋਨਾਚੀ ਸੀਰੀਜ਼,

1,1,2,3,5,8,13,21, ਦੁਆਰਾ ਦਿੱਤੀ ਗਈ ਹੈ, 34,55,…

ਉਪਰੋਕਤ ਕ੍ਰਮ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਮੌਜੂਦਾ ਤੱਤ ਪਿਛਲੇ ਦੋ ਤੱਤਾਂ ਦਾ ਜੋੜ ਹੈ। ਨਾਲ ਹੀ, ਫਿਬੋਨਾਚੀ ਲੜੀ ਦਾ ਪਹਿਲਾ ਤੱਤ 1 ਹੈ।

ਇਸ ਲਈ ਆਮ ਤੌਰ 'ਤੇ ਜੇਕਰ n ਮੌਜੂਦਾ ਸੰਖਿਆ ਹੈ, ਤਾਂ ਇਹ (n-1) ਅਤੇ (n-2) ਦੇ ਜੋੜ ਦੁਆਰਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਜਿਵੇਂ ਕਿ ਮੌਜੂਦਾ ਤੱਤ ਨੂੰ ਪਿਛਲੇ ਤੱਤਾਂ ਦੇ ਰੂਪ ਵਿੱਚ ਦਰਸਾਇਆ ਗਿਆ ਹੈ, ਅਸੀਂ ਇਸ ਸਮੱਸਿਆ ਨੂੰ ਆਵਰਤੀ ਵਰਤ ਕੇ ਪ੍ਰਗਟ ਕਰ ਸਕਦੇ ਹਾਂ।

ਫਿਬੋਨਾਚੀ ਲੜੀ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਪ੍ਰੋਗਰਾਮ ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਹੈ:

public class Main { //method to calculate fibonacci series static int fibonacci(int n) { if (n = 1) { return n; } return fibonacci(n-1) + fibonacci(n-2); } public static void main(String[] args) { int number = 10; //print first 10 numbers of fibonacci series System.out.println ("Fibonacci Series: First 10 numbers:"); for (int i = 1; i = number; i++) { System.out.print(fibonacci(i) + " "); } } } 

ਆਉਟਪੁੱਟ

#2) ਜਾਂਚ ਕਰੋ ਕਿ ਕੀ ਇੱਕ ਨੰਬਰ ਇੱਕ ਪੈਲਿੰਡਰੋਮ ਹੈ ਰਿਕਰਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ

ਇੱਕ ਪੈਲਿਨਡਰੋਮ ਇੱਕ ਕ੍ਰਮ ਹੈ ਜੋ ਬਰਾਬਰ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਅਸੀਂ ਇਸਨੂੰ ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਜਾਂ ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਪੜ੍ਹੋ।

ਇੱਕ ਨੰਬਰ 121 ਦਿੱਤਾ ਗਿਆ ਹੈ, ਅਸੀਂ ਦੇਖਦੇ ਹਾਂ ਕਿ ਜਦੋਂ ਅਸੀਂ ਇਸਨੂੰ ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਅਤੇ ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਪੜ੍ਹਦੇ ਹਾਂ, ਤਾਂ ਇਹ ਬਰਾਬਰ ਹੁੰਦਾ ਹੈ। ਇਸ ਲਈ ਨੰਬਰ 121 ਇੱਕ ਪੈਲਿਨਡਰੋਮ ਹੈ।

ਆਓ ਇੱਕ ਹੋਰ ਨੰਬਰ ਲੈਂਦੇ ਹਾਂ, 1242। ਜਦੋਂ ਅਸੀਂ ਇਸਨੂੰ ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਪੜ੍ਹਦੇ ਹਾਂ ਤਾਂ ਇਹ 1242 ਹੁੰਦਾ ਹੈ ਅਤੇ ਜਦੋਂ ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਪੜ੍ਹਿਆ ਜਾਂਦਾ ਹੈ ਤਾਂ ਇਹ 2421 ਹੁੰਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ ਇਹ ਇੱਕ ਪੈਲਿਨਡਰੋਮ ਨਹੀਂ ਹੈ।

ਅਸੀਂਸੰਖਿਆਵਾਂ ਦੇ ਅੰਕਾਂ ਨੂੰ ਉਲਟਾ ਕੇ ਪੈਲਿਨਡਰੋਮ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਲਾਗੂ ਕਰੋ ਅਤੇ ਦਿੱਤੇ ਗਏ ਸੰਖਿਆ ਦੀ ਉਲਟੀ ਪ੍ਰਤੀਨਿਧਤਾ ਨਾਲ ਤੁਲਨਾ ਕਰੋ।

ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਪ੍ਰੋਗਰਾਮ ਪੈਲਿਨਡਰੋਮ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਲਾਗੂ ਕਰਦਾ ਹੈ।

import java.io.*; import java.util.*; public class Main { // check if num contains only one digit public static int oneDigit(int num) { if ((num >= 0) && (num  10)) return 1; else return 0; } //palindrome utility function public static int isPalindrome_util (int num, int revNum) throws Exception { // base condition; return if num=0 if (num == 0) { return revNum; } else { //call utility function recursively revNum = isPalindrome_util(num / 10, revNum); } // Check if first digit of num and revNum are equal if (num % 10 == revNum % 10) { // if yes, revNum will move with num return revNum / 10; } else { // exit throw new Exception(); } } //method to check if a given number is palindrome using palindrome utility function public static int isPalindrome(int num) throws Exception { if (num  0) num = (-num); int revNum = (num); return isPalindrome_util(num, revNum); } public static void main(String args[]) { int n = 1242; try { isPalindrome(n); System.out.println("Yes, the given number " + n + " is a palindrome."); } catch (Exception e) { System.out.println("No, the given number " + n + " is not a palindrome."); } n = 1221; try { isPalindrome(n); System.out.println("Yes, the given number " + n + " is a palindrome."); } catch (Exception e) { System.out.println("No, the given number " + n + " is not a palindrome."); } } }

ਆਉਟਪੁੱਟ

#3) ਰਿਵਰਸ ਸਟ੍ਰਿੰਗ ਰੀਕਰਸ਼ਨ ਜਾਵਾ

ਇੱਕ ਸਟ੍ਰਿੰਗ "ਹੈਲੋ" ਦਿੱਤੇ ਜਾਣ 'ਤੇ ਸਾਨੂੰ ਇਸਨੂੰ ਉਲਟਾਉਣਾ ਪਵੇਗਾ ਤਾਂ ਕਿ ਨਤੀਜੇ ਵਾਲੀ ਸਤਰ “olleH” ਹੈ।

ਇਹ ਰੀਕਰਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਸਟ੍ਰਿੰਗ ਦੇ ਆਖਰੀ ਅੱਖਰ ਤੋਂ ਸ਼ੁਰੂ ਕਰਦੇ ਹੋਏ ਅਸੀਂ ਹਰ ਅੱਖਰ ਨੂੰ ਮੁੜ-ਮੁੜ ਪ੍ਰਿੰਟ ਕਰਦੇ ਹਾਂ ਜਦੋਂ ਤੱਕ ਸਤਰ ਦੇ ਸਾਰੇ ਅੱਖਰ ਖਤਮ ਨਹੀਂ ਹੋ ਜਾਂਦੇ।

ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਪ੍ਰੋਗਰਾਮ ਇੱਕ ਦਿੱਤੀ ਗਈ ਸਤਰ ਨੂੰ ਉਲਟਾਉਣ ਲਈ ਆਵਰਤੀ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।

class String_Reverse { //recursive method to reverse a given string void reverseString(String str) { //base condition; return if string is null or with 1 or less character if ((str==null)||(str.length() = 1)) System.out.println(str); else { //recursively print each character in the string from the end System.out.print(str.charAt(str.length()-1)); reverseString(str.substring(0,str.length()-1)); } } } class Main{ public static void main(String[] args) { String inputstr = "SoftwareTestingHelp"; System.out.println("The given string: " + inputstr); String_Reverse obj = new String_Reverse(); System.out.print("The reversed string: "); obj.reverseString(inputstr); } } 

ਆਉਟਪੁੱਟ

#4) ਬਾਇਨਰੀ ਖੋਜ Java Recursion

ਇੱਕ ਬਾਈਨਰੀ ਖੋਜ ਐਲਗੋਰਿਦਮ ਖੋਜ ਲਈ ਇੱਕ ਮਸ਼ਹੂਰ ਐਲਗੋਰਿਦਮ ਹੈ। ਇਸ ਐਲਗੋਰਿਦਮ ਵਿੱਚ, n ਐਲੀਮੈਂਟਸ ਦੀ ਇੱਕ ਲੜੀਬੱਧ ਐਰੇ ਦਿੱਤੀ ਗਈ ਹੈ, ਅਸੀਂ ਦਿੱਤੇ ਕੁੰਜੀ ਤੱਤ ਲਈ ਇਸ ਐਰੇ ਦੀ ਖੋਜ ਕਰਦੇ ਹਾਂ। ਸ਼ੁਰੂ ਵਿੱਚ, ਅਸੀਂ ਐਰੇ ਦੇ ਮੱਧ ਤੱਤ ਨੂੰ ਲੱਭ ਕੇ ਐਰੇ ਨੂੰ ਦੋ ਹਿੱਸਿਆਂ ਵਿੱਚ ਵੰਡਦੇ ਹਾਂ।

ਫਿਰ ਇਸ ਗੱਲ 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹੋਏ ਕਿ ਕੀ ਮਿਡ ਅਸੀਂ ਆਪਣੀ ਖੋਜ ਨੂੰ ਐਰੇ ਦੇ ਪਹਿਲੇ ਜਾਂ ਦੂਜੇ ਅੱਧ ਵਿੱਚ ਸੀਮਤ ਕਰਦੇ ਹਾਂ। ਇਸ ਤਰ੍ਹਾਂ ਇਹੀ ਪ੍ਰਕਿਰਿਆ ਉਦੋਂ ਤੱਕ ਦੁਹਰਾਈ ਜਾਂਦੀ ਹੈ ਜਦੋਂ ਤੱਕ ਮੁੱਖ ਤੱਤਾਂ ਦੀ ਸਥਿਤੀ ਨਹੀਂ ਮਿਲਦੀ।

ਅਸੀਂ ਇੱਥੇ ਆਵਰਤੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸ ਐਲਗੋਰਿਦਮ ਨੂੰ ਲਾਗੂ ਕਰਾਂਗੇ।

import java.util.*; class Binary_Search { // recursive binary search int binarySearch(int numArray[], int left, int right, int key) { if (right >= left) { //calculate mid of the array int mid = left + (right - left) / 2; // if the key is at mid, return mid if (numArray[mid] == key) return mid; // if key  key) return binarySearch(numArray, left, mid - 1, key); // Else recursively search in the right subarray return binarySearch(numArray, mid + 1, right, key); } // no elements in the array, return -1 return -1; } } class Main{ public static void main(String args[]) { Binary_Search ob = new Binary_Search(); //declare and print the array int numArray[] = { 4,6,12,16,22}; System.out.println("The given array : " + Arrays.toString(numArray)); int len = numArray.length; //length of the array int key = 16; //key to be searched int result = ob.binarySearch(numArray, 0, len - 1, key); if (result == -1) System.out.println("Element " + key + " not present"); else System.out.println("Element " + key + " found at index " + result); } } 

ਆਉਟਪੁੱਟ

#5) ਰੀਕਰਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਐਰੇ ਵਿੱਚ ਘੱਟੋ-ਘੱਟ ਮੁੱਲ ਲੱਭੋ

ਰੀਕਰਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਸੀਂ ਐਰੇ ਵਿੱਚ ਘੱਟੋ-ਘੱਟ ਮੁੱਲ ਵੀ ਲੱਭ ਸਕਦੇ ਹਾਂ।

ਦਐਰੇ ਵਿੱਚ ਘੱਟੋ-ਘੱਟ ਮੁੱਲ ਲੱਭਣ ਲਈ Java ਪ੍ਰੋਗਰਾਮ ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਹੈ।

import java.util.*; class Main { static int getMin(int numArray[], int i, int n) { //return first element if only one element or minimum of the array elements return (n == 1) ? numArray[i] : Math.min(numArray[i], getMin(numArray,i + 1 , n - 1)); } public static void main(String[] args) { int numArray[] = { 7,32,64,2,10,23 }; System.out.println("Given Array : " + Arrays.toString(numArray)); int n = numArray.length; System.out.print("Minimum element of array: " + getMin(numArray, 0, n) + "\n"); } }

ਆਉਟਪੁੱਟ

22>

ਇਹ ਕੁਝ ਹਨ। ਆਵਰਤੀ ਦੀਆਂ ਉਦਾਹਰਣਾਂ ਇਹਨਾਂ ਉਦਾਹਰਨਾਂ ਤੋਂ ਇਲਾਵਾ, ਸਾਫਟਵੇਅਰ ਵਿੱਚ ਬਹੁਤ ਸਾਰੀਆਂ ਹੋਰ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਆਵਰਤੀ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲਾਗੂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

ਰੀਕਰਸ਼ਨ ਦੀਆਂ ਕਿਸਮਾਂ

ਕਾਲ ਕਦੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਦੇ ਆਧਾਰ 'ਤੇ ਦੋ ਤਰ੍ਹਾਂ ਦੀਆਂ ਹੁੰਦੀਆਂ ਹਨ। ਆਵਰਤੀ ਵਿਧੀ।

ਉਹ ਹਨ:

#1) ਟੇਲ ਰੀਕਰਸ਼ਨ

ਜਦੋਂ ਆਵਰਤੀ ਵਿਧੀ ਲਈ ਕਾਲ ਆਖਰੀ ਸਟੇਟਮੈਂਟ ਹੁੰਦੀ ਹੈ ਰੀਕਰਸਿਵ ਵਿਧੀ ਦੇ ਅੰਦਰ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ, ਇਸਨੂੰ "ਟੇਲ ਰੀਕਰਸ਼ਨ" ਕਿਹਾ ਜਾਂਦਾ ਹੈ।

ਟੇਲ ਰੀਕਰਸ਼ਨ ਵਿੱਚ, ਰੀਕਰਸਿਵ ਕਾਲ ਸਟੇਟਮੈਂਟ ਨੂੰ ਆਮ ਤੌਰ 'ਤੇ ਵਿਧੀ ਦੀ ਵਾਪਸੀ ਸਟੇਟਮੈਂਟ ਦੇ ਨਾਲ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ।

ਦ ਟੇਲ ਰੀਕਰਸ਼ਨ ਲਈ ਜਨਰਲ ਸਿੰਟੈਕਸ ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਹੈ:

methodName ( T parameters…){ { if (base_condition == true) { return result; } return methodName (T parameters …) //tail recursion } 

#2) ਹੈੱਡ ਰੀਕਰਸ਼ਨ

ਹੈੱਡ ਰੀਕਰਸ਼ਨ ਕੋਈ ਵੀ ਰੀਕਰਸੀਵ ਪਹੁੰਚ ਹੈ ਜੋ ਟੇਲ ਰੀਕਰਸ਼ਨ ਨਹੀਂ ਹੈ। ਇਸ ਲਈ ਆਮ ਰੀਕਰਸ਼ਨ ਵੀ ਅੱਗੇ ਆਵਰਤੀ ਹੈ।

ਹੈੱਡ ਰੀਕਰਸ਼ਨ ਦਾ ਸੰਟੈਕਸ ਇਸ ਤਰ੍ਹਾਂ ਹੈ:

methodName (T parameters…){ if (some_condition == true) { return methodName (T parameters…); } return result; } 

ਜਾਵਾ ਵਿੱਚ ਰੀਕਰਸ਼ਨ ਬਨਾਮ ਰੀਕਰਸ਼ਨ

ਰੀਕਰਸ਼ਨ ਇਟਰੇਸ਼ਨ
ਰੀਕਰਸ਼ਨ ਇੱਕ ਪ੍ਰਕਿਰਿਆ ਹੈ ਜਿੱਥੇ ਇੱਕ ਵਿਧੀ ਆਪਣੇ ਆਪ ਨੂੰ ਵਾਰ-ਵਾਰ ਕਾਲ ਕਰਦੀ ਹੈ ਜਦੋਂ ਤੱਕ ਇੱਕ ਅਧਾਰ ਸਥਿਤੀ ਪੂਰੀ ਨਹੀਂ ਹੋ ਜਾਂਦੀ। ਦੁਹਰਾਓ ਹੈ ਇੱਕ ਪ੍ਰਕਿਰਿਆ ਜਿਸ ਦੁਆਰਾ ਕੋਡ ਦੇ ਇੱਕ ਟੁਕੜੇ ਨੂੰ ਸੀਮਤ ਸੰਖਿਆ ਲਈ ਜਾਂ ਇੱਕ ਸ਼ਰਤ ਪੂਰੀ ਹੋਣ ਤੱਕ ਵਾਰ-ਵਾਰ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ।
ਫੰਕਸ਼ਨਾਂ ਲਈ ਐਪਲੀਕੇਸ਼ਨ ਹੈ। ਲਾਗੂ ਹੈ। ਲੂਪਸ ਲਈ।
ਲਈ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈਛੋਟਾ ਕੋਡ ਆਕਾਰ। ਵੱਡੇ ਕੋਡ ਆਕਾਰ ਲਈ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ।
ਹੋਰ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਕਿਉਂਕਿ ਹਰੇਕ ਰੀਕਰਸੀਵ ਕਾਲ ਨੂੰ ਸਟੈਕ ਵਿੱਚ ਧੱਕਿਆ ਜਾਂਦਾ ਹੈ ਮੁਕਾਬਲਤਨ ਘੱਟ ਮੈਮੋਰੀ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
ਡੀਬੱਗ ਕਰਨਾ ਅਤੇ ਰੱਖ-ਰਖਾਅ ਕਰਨਾ ਮੁਸ਼ਕਲ ਡੀਬੱਗ ਕਰਨਾ ਅਤੇ ਰੱਖ-ਰਖਾਅ ਕਰਨਾ ਆਸਾਨ
ਸਟੈਕ ਓਵਰਫਲੋ ਵਿੱਚ ਨਤੀਜੇ ਜੇਕਰ ਅਧਾਰ ਸਥਿਤੀ ਨਿਰਧਾਰਿਤ ਨਹੀਂ ਹੈ ਜਾਂ ਪਹੁੰਚੀ ਨਹੀਂ ਹੈ। ਅਨੰਤ ਤੱਕ ਚਲਾਇਆ ਜਾ ਸਕਦਾ ਹੈ ਪਰ ਅੰਤ ਵਿੱਚ ਕਿਸੇ ਵੀ ਮੈਮੋਰੀ ਗਲਤੀ ਨਾਲ ਐਗਜ਼ੀਕਿਊਟ ਕਰਨਾ ਬੰਦ ਕਰ ਦੇਵੇਗਾ
ਸਮੇਂ ਦੀ ਗੁੰਝਲਤਾ ਬਹੁਤ ਜ਼ਿਆਦਾ ਹੈ। ਸਮੇਂ ਦੀ ਗੁੰਝਲਤਾ ਮੁਕਾਬਲਤਨ ਹੇਠਲੇ ਪਾਸੇ ਹੈ।

ਅਕਸਰ ਪੁੱਛੇ ਜਾਣ ਵਾਲੇ ਸਵਾਲ

ਪ੍ਰ #1) ਜਾਵਾ ਵਿੱਚ ਰੀਕਰਸ਼ਨ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ?

ਜਵਾਬ: ਆਵਰਤੀ ਵਿੱਚ, ਰਿਕਰਸਿਵ ਫੰਕਸ਼ਨ ਆਪਣੇ ਆਪ ਨੂੰ ਵਾਰ-ਵਾਰ ਕਾਲ ਕਰਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਇੱਕ ਅਧਾਰ ਸਥਿਤੀ ਸੰਤੁਸ਼ਟ ਨਹੀਂ ਹੋ ਜਾਂਦੀ। ਕਾਲ ਫੰਕਸ਼ਨ ਲਈ ਮੈਮੋਰੀ ਨੂੰ ਕਾਲਿੰਗ ਫੰਕਸ਼ਨ ਲਈ ਮੈਮੋਰੀ ਦੇ ਸਿਖਰ 'ਤੇ ਸਟੈਕ 'ਤੇ ਧੱਕਿਆ ਜਾਂਦਾ ਹੈ। ਹਰੇਕ ਫੰਕਸ਼ਨ ਕਾਲ ਲਈ, ਲੋਕਲ ਵੇਰੀਏਬਲ ਦੀ ਇੱਕ ਵੱਖਰੀ ਕਾਪੀ ਬਣਾਈ ਜਾਂਦੀ ਹੈ।

Q #2) ਰਿਕਰਸਨ ਕਿਉਂ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ?

ਉੱਤਰ: ਆਵਰਤੀ ਦੀ ਵਰਤੋਂ ਉਹਨਾਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਛੋਟੀਆਂ ਸਮੱਸਿਆਵਾਂ ਵਿੱਚ ਵੰਡਿਆ ਜਾ ਸਕਦਾ ਹੈ ਅਤੇ ਸਮੁੱਚੀ ਸਮੱਸਿਆ ਨੂੰ ਇੱਕ ਛੋਟੀ ਸਮੱਸਿਆ ਦੇ ਰੂਪ ਵਿੱਚ ਪ੍ਰਗਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

ਉਨ੍ਹਾਂ ਸਮੱਸਿਆਵਾਂ ਲਈ ਵੀ ਆਵਰਤੀ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜੋ ਬਹੁਤ ਜ਼ਿਆਦਾ ਹਨ। ਗੁੰਝਲਦਾਰ ਇੱਕ ਦੁਹਰਾਓ ਪਹੁੰਚ ਵਰਤ ਕੇ ਹੱਲ ਕੀਤਾ ਜਾ ਕਰਨ ਲਈ. ਸਮੱਸਿਆਵਾਂ ਤੋਂ ਇਲਾਵਾ ਜਿਨ੍ਹਾਂ ਲਈ ਸਮੇਂ ਦੀ ਗੁੰਝਲਤਾ ਕੋਈ ਮੁੱਦਾ ਨਹੀਂ ਹੈ, ਦੁਹਰਾਓ ਦੀ ਵਰਤੋਂ ਕਰੋ।

ਪ੍ਰ #3) ਕੀ ਲਾਭ ਹਨRecursion?

ਜਵਾਬ:

Recursion ਦੇ ਲਾਭਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ:

  1. Recursion ਬੇਲੋੜੀ ਕਾਲਿੰਗ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ ਫੰਕਸ਼ਨ ਦਾ।
  2. ਦੁਹਰਾਓ ਪਹੁੰਚ ਦੀ ਤੁਲਨਾ ਵਿੱਚ ਦੁਹਰਾਓ ਸਾਨੂੰ ਆਸਾਨੀ ਨਾਲ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।

ਪ੍ਰ #4) ਕਿਹੜਾ ਬਿਹਤਰ ਹੈ - ਆਵਰਤੀ ਜਾਂ ਦੁਹਰਾਓ?

ਜਵਾਬ: ਬੇਸ ਫੰਕਸ਼ਨ ਤੱਕ ਪਹੁੰਚਣ ਤੱਕ ਰੀਕਰਸ਼ਨ ਵਾਰ-ਵਾਰ ਕਾਲਾਂ ਕਰਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ ਇੱਕ ਮੈਮੋਰੀ ਓਵਰਹੈੱਡ ਹੈ ਕਿਉਂਕਿ ਹਰੇਕ ਫੰਕਸ਼ਨ ਕਾਲ ਲਈ ਇੱਕ ਮੈਮੋਰੀ ਨੂੰ ਸਟੈਕ 'ਤੇ ਧੱਕਿਆ ਜਾਂਦਾ ਹੈ।

ਦੂਜੇ ਪਾਸੇ ਦੁਹਰਾਓ ਵਿੱਚ ਜ਼ਿਆਦਾ ਮੈਮੋਰੀ ਓਵਰਹੈੱਡ ਨਹੀਂ ਹੁੰਦੀ ਹੈ। ਰੀਕਰਸ਼ਨ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਦੁਹਰਾਓ ਪਹੁੰਚ ਨਾਲੋਂ ਹੌਲੀ ਹੈ। ਰੀਕਰਸ਼ਨ ਕੋਡ ਦੇ ਆਕਾਰ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ ਜਦੋਂ ਕਿ ਦੁਹਰਾਉਣ ਵਾਲੀ ਪਹੁੰਚ ਕੋਡ ਨੂੰ ਵੱਡਾ ਬਣਾਉਂਦੀ ਹੈ।

ਪ੍ਰ #5) ਦੁਹਰਾਅ ਉੱਤੇ ਆਵਰਤੀ ਦੇ ਕੀ ਫਾਇਦੇ ਹਨ?

ਜਵਾਬ:

  • ਰੀਕਰਸ਼ਨ ਕੋਡ ਨੂੰ ਸਪਸ਼ਟ ਅਤੇ ਛੋਟਾ ਬਣਾਉਂਦਾ ਹੈ।
  • ਮੁਨਾਰਾ ਹਨੋਈ, ਟ੍ਰੀ ਵਰਗੀਆਂ ਸਮੱਸਿਆਵਾਂ ਲਈ ਦੁਹਰਾਓ ਪਹੁੰਚ ਤੋਂ ਬਿਹਤਰ ਹੈ। ਟ੍ਰੈਵਰਸਲਜ਼, ਆਦਿ।
  • ਜਿਵੇਂ ਕਿ ਹਰ ਫੰਕਸ਼ਨ ਕਾਲ ਵਿੱਚ ਮੈਮੋਰੀ ਸਟੈਕ 'ਤੇ ਪੁਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਰੀਕਰਸ਼ਨ ਵਧੇਰੇ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।
  • ਰੀਕਰਸ਼ਨ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਦੁਹਰਾਓ ਪਹੁੰਚ ਨਾਲੋਂ ਹੌਲੀ ਹੁੰਦੀ ਹੈ।

ਸਿੱਟਾ

ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ ਸਾਫਟਵੇਅਰ ਵਿੱਚ ਰੀਕਰਸ਼ਨ ਇੱਕ ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਧਾਰਨਾ ਹੈ। ਰੀਕਰਸ਼ਨ ਦੀ ਵਰਤੋਂ ਜ਼ਿਆਦਾਤਰ ਡੇਟਾ ਢਾਂਚੇ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਜਿਵੇਂ ਕਿ ਹਨੋਈ ਦੇ ਟਾਵਰ, ਟ੍ਰੀ ਟ੍ਰੈਵਰਸਲ, ਲਿੰਕਡ ਲਿਸਟਾਂ ਆਦਿ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਹਾਲਾਂਕਿ ਇਸ ਵਿੱਚ ਜ਼ਿਆਦਾ ਮੈਮੋਰੀ ਲੱਗਦੀ ਹੈ,ਰੀਕਰਸ਼ਨ ਕੋਡ ਨੂੰ ਸਰਲ ਅਤੇ ਸਪੱਸ਼ਟ ਬਣਾਉਂਦਾ ਹੈ।

ਅਸੀਂ ਇਸ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ ਰੀਕਰਸ਼ਨ ਬਾਰੇ ਸਭ ਕੁਝ ਖੋਜਿਆ ਹੈ। ਅਸੀਂ ਸੰਕਲਪ ਦੀ ਬਿਹਤਰ ਸਮਝ ਲਈ ਕਈ ਪ੍ਰੋਗਰਾਮਿੰਗ ਉਦਾਹਰਣਾਂ ਨੂੰ ਵੀ ਲਾਗੂ ਕੀਤਾ ਹੈ।

ਉੱਪਰ ਸਕ੍ਰੋਲ ਕਰੋ